首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于优化器

关于优化器
EN

Stack Overflow用户
提问于 2021-01-08 08:57:32
回答 3查看 66关注 0票数 0
  1. 我创建了一个数据库并与其连接。但是当我执行

代码语言:javascript
复制
select optimizer;

它回来了

代码语言:javascript
复制
SELECT: identifier 'optimizer' unknown

有什么问题吗?而且我无法使用\d在数据库中找到sys表。

如果我想添加一个优化器myopt,它是否足以执行以下步骤:在/monetdb5/optimizer/

  • Add中编写opt_myopt.h和opt_myopt.c,将代码写入/monetdb5/optimizer/opt_wrapper.c

  • Add中的代码,将函数写入/monetdb5/optimizer/optimizer.c

  • Add中的optimizer_init_funcs中,在/monetdb5/optimizer/opt_pipes.c

中使用新的管道

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-08 09:45:08

对于第一个问题:如果您的current_schema不是sys,则需要使用select sys.optimizer;

对于您的第二个问题:最好的现有示例可能在monetdb5/extras/mal_optimizer_template中。接下来,它基本上是检查源代码,看看其他优化器是如何实现的。注意,虽然不经常发生这种情况,但MonetDB的内部结构可以在(主要)版本之间进行更改。我会重新评论你使用Oct2020或更新。

票数 0
EN

Stack Overflow用户

发布于 2021-01-08 09:40:33

从Oct2020开始,变量现在有了一个模式(以保持它是其他的SQL对象)。在您的会话中,'sys‘不是会话的模式,这就是为什么它找不到’优化器‘变量的原因,对于表也是如此。

在默认分支(将在下一个版本中可用)中,我在用户上添加了一个“模式路径”属性,以便在当前会话的模式之外搜索SQL对象。默认情况下,它包括“sys”模式。

票数 1
EN

Stack Overflow用户

发布于 2021-01-08 10:09:43

关于你的第二个问题,

您还必须创建优化器管道并将其添加到opt_pipes.c中。查找default_pipe,然后将其复制/粘贴到一个新管道中,并将优化器添加到其中。

还有一些地方需要添加优化器,比如opt_wrapper.c中的opt_wrapper.c数组。只需模仿像"reorder"这样的标准优化器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65626005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档