2023-07-25 monetdb-relation-关键数据结构-记录

摘要:

monetdb-relation-关键数据结构-记录

关键数据结构:

expression_type

typedef enum expression_type {e_atom,e_column,e_cmp,e_func,e_aggr,e_convert,e_psm
} expression_type;

expression


typedef struct expression {expression_type type;	/* atom, cmp, func/aggr */sql_exp_name alias;void *l;void *r;void *f;	/* func's and aggr's, also e_cmp may have have 2 arguments */unsigned int flag; /* cmp types, PSM types/level */unsigned intcard:2,	/* card (0 truth value!) (1 atoms) (2 aggr) (3 multi value) */freevar:4,	/* free variable, ie binds to the upper dependent join */intern:1,anti:1,ascending:1,	/* order direction */nulls_last:1,	/* return null after all other rows */zero_if_empty:1, 	/* in case of partial aggregator computation, some aggregators need to return 0 instead of NULL */distinct:1,semantics:1,	/* is vs = semantics (nil = nil vs unknown != unknown), ranges with or without nil, aggregation with or without nil */need_no_nil:1,has_no_nil:1,unique:1,	/* expression has unique values, but it may have multiple NULL values! */base:1,ref:1,		/* used to indicate an other expression may reference this one */used:1,	/* used for quick dead code removal */symmetric:1; /* compare between symmetric */sql_subtype	tpe;void *p;	/* properties for the optimizer */
} sql_exp;

ddl_statement

typedef enum ddl_statement {ddl_output,ddl_list,ddl_psm,ddl_exception,ddl_create_seq,ddl_alter_seq,ddl_drop_seq,ddl_alter_table_add_range_partition,ddl_alter_table_add_list_partition,ddl_release,ddl_commit,ddl_rollback,ddl_trans,ddl_create_schema,ddl_drop_schema,ddl_create_table,ddl_drop_table,ddl_create_view,ddl_drop_view,ddl_drop_constraint,ddl_alter_table,ddl_create_type,ddl_drop_type,ddl_drop_index,ddl_create_function,ddl_drop_function,ddl_create_trigger,ddl_drop_trigger,ddl_grant_roles,ddl_revoke_roles,ddl_grant,ddl_revoke,ddl_grant_func,ddl_revoke_func,ddl_create_user,ddl_drop_user,ddl_alter_user,ddl_rename_user,ddl_create_role,ddl_drop_role,ddl_alter_table_add_table,ddl_alter_table_del_table,ddl_alter_table_set_access,ddl_comment_on,ddl_rename_schema,ddl_rename_table,ddl_rename_column,ddl_maxops /* evaluated to the max value, should be always kept at the bottom */
} ddl_statement;

operator_type

typedef enum operator_type {op_basetable = 0,op_table,op_ddl,op_project,		/* includes order by */op_select,op_join,op_left,op_right,op_full,op_semi,op_anti,op_union,op_inter,op_except,op_groupby,op_topn,op_sample,op_insert,	/* insert(l=table, r insert expressions) */op_update,	/* update(l=table, r update expressions) */op_delete,	/* delete(l=table, r delete expression) */op_truncate, /* truncate(l=table) */op_merge
} operator_type;

relation

typedef struct relation {sql_ref ref;operator_type op;void *l;void *r;list *exps;list *attr; /* attributes: mark-joins return extra attributes *//* later put all 'projection' attributes in here, ie for set ops, project/group/table/basetable by* select/ (semi/anti/left/outer/right)join will use exps for predicates* groupby will use exps for group by exps* project can use exps for the order by bits* topn/sample use exps for the input arguments of the limit/sample*/int nrcols;	/* nr of cols */unsigned intflag:16,card:4,	/* 0, 1 (row), 2 aggr, 3 */dependent:1, 	/* dependent join */distinct:1,processed:1,   /* fully processed or still in the process of building */outer:1,	/* used as outer (ungrouped) */grouped:1,	/* groupby processed all the group by exps */single:1;/** Used by rewriters at rel_unnest, rel_optimizer and rel_distribute so a relation is not modified twice* The list is kept at rel_optimizer_private.h Please update it accordingly*/uint8_t used;void *p;	/* properties for the optimizer, distribution */
} sql_rel;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搜集了一些题

kafka为什么会重复消费消息? 在kafka提交offset的时候,可能由网络延迟或者某些原因导致,offset没有同步,导致其他consumer消费了已经消费的消息 kafka如何实现顺序消费? kafak的话需要将顺序消费的消息通过指定分区策略发送到指定的partition中 如果了解rocketMq的话,可以顺带…

Packet Tracer – 配置动态 NAT

Packet Tracer – 配置动态 NAT 拓扑图 目标 第 1 部分:配置动态 NAT 第 2 部分:验证 NAT 实施 第 1 部分: 配置动态 NAT 步骤 1: 配置允许的流量。 在 R2 上,为 ACL 1 配置一个语句以允许属于 172.16.0.…

【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

基于Docker compose创建LNMP环境并运行Wordpress网站平台 1.Docker-Compose概述2. YAML文件格式及编写注意事项3. Docker-Compose配置常用字段4.Docker Compose常用命令5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台5.1 Docker Compose环境安装5.2 使用…

深入解析 SOCKS5 代理与网络安全

一、SOCKS5 代理技术概述 SOCKS5(Socket Secure 5)代理是 SOCKS 协议的最新版本,它允许客户端在客户端与代理服务器之间建立一个安全通道,并通过此通道发送请求并访问远程服务器。与 HTTP/HTTPS 代理相比,SOCKS5 代理在…

【外键合并python】

外键合并(Foreign Key Merge) 外键合并是指在数据库或者数据表中,通过共同的外键将多个数据表合并在一起的操作。在 Excel 表格中,我们可以使用外键来将多个表格合并,类似于数据库中的关联操作。 步骤一:…

SpringBoot项目——springboot配置Tomcat两个端口,https和http的方式 jar的打包和运行

目录 引出springboot配置Tomcat两个端口,https和http的方式1.生成SSL证书2.配置client.p12和https端口3.配置http的8080端口WebServerFactoryCustomizer接口4.启动项目 项目应用:在某项目中有一个功能需要https协议Tomcat启动https和http两个端口根据htt…

工业物联网网关让PLC数据手机端监控和报警更加简单

在传统的工厂管理中,我们想要看到现场设备的实时数据,必须在控制室内通过工控机、电脑、触摸屏等这些上位机设备才能看到,同理PLC维护也需要工程师在现场进行编程调试工作,非常不方便。 随着工业物联网的发展,作为设备…

“学习嵌入式开发:明确目标,提升技能“

嵌入式领域涵盖广泛,不可能一次性掌握所有知识。因此,明确学习目标和方向非常重要。选择感兴趣且与职业发展相关的领域进行深入学习是明智之举。 嵌入式技术在不断发展,过去与现在存在差异。选择学习当前行业的主流技术和趋势是明智选择。掌…

抖音矩阵系统源码开发搭建部署分享

一、 功能开发设计 (1)数据概览:账号,视频top10数据统计 (2)AI视频创意:原创视频批量剪辑,阶乘算法,去重原理 (3)同城拓客:线下门店…

【Java基础教程】(四十六)IO篇 · 下:System类对IO的支持:错误输出、信息输出、系统输入,字符缓冲流、扫描流和对象序列化流~

Java基础教程之IO操作 下 🔹本节学习目标1️⃣ System类对 IO 的支持1.1 错误输出:System.err1.2 信息输出:System.out1.3 系统输入:System. in 2️⃣ 字符缓冲流:BufferedReader3️⃣ 扫描流:Scanner4️⃣…

两个数组的dp问题(2)--动态规划

一)交错字符串: 97. 交错字符串 - 力扣(LeetCode) 一)确定一个状态标识: 如果我选择s1的一段区间,再进行选择s2得一段区间那么s3这个字符串的长度就已经固定了 预处理:在s1字符串s2字符串和s3字符串前面加上一个虚拟字符,让下标从…

【MyBatis-Plus 进阶学习笔记】

MyBatis-Plus 进阶学习笔记记录 一、 MyBatis Plus 七大功能0. 数据准备1. 逻辑删除2. 自动填充2.1 优化1 自动填充 有的类没有更新和创建时间字段2.2 优化2 自己设置时间时填充自己设置的,不设置时自动填充 3. 乐观锁插件 注:wrapper不能服用4. 性能分析…

网安高级笔记1

html实体编码 HTML实体编码&#xff0c;格式 以&符号开头&#xff0c;以;分号结尾的 HTML 中的预留字符必须被替换为字符实体 在 HTML 中不能使用小于号&#xff08;<&#xff09;和大于号&#xff08;>&#xff09;&#xff0c;这是因为浏览器会误认为它们是…

RFC8470在HTTP中使用早期数据

摘要 使用TLS早期数据会暴露出重放攻击的可能性。本文定义了允许客户端与服务器就早期数据中发送的HTTP请求进行通信的机制。描述了使用这些机制来减轻重放风险的技术。 1. 介绍 TLS 1.3[TLS13]引入了早期数据&#xff08;也称为零往返时间&#xff08;0-RTT&#xff09;数…

ffplay播放器剖析(7)----音视频暂停模块分析

文章目录 1. 暂停触发流程2. toggle_pause3. stream_toggle_pause 1. 暂停触发流程 1.通过SDL触发事件调用toggle_pause 2.toggle_pause调用stream_toggle_pause 3.stream_toggle_pause修改暂停变量 2. toggle_pause static void toggle_pause(VideoState *is) {stream_to…

AI写场景小作文

AI写场景小作文 https://edu.csdn.net/learn/38500/612957?spm3001.4143 函数isNum(n) 参数为字符串属于整数&#xff0c;浮点数&#xff0c;或复数&#xff0c;则输出True,否则输出False def isNum(n):try:neval(n)if type(n)int or type(n)float or type(n)complex:print…

HTML中的焦点管理

前言 焦点作为页面交互中的重要一环&#xff0c;涉及到的知识点也比较多&#xff0c;有必要做一个统一的总结。 HTML 中的可获取焦点的元素 具有 href 属性的 HTMLAnchorElement/HTMLAreaElement非禁用态的 HTMLInputElement/HTMLSelectElement/HTMLTextAreaElement/HTMLBut…

【VUE】使用elementUI tree组件根据所选id自动回显

需求如下&#xff1a; 1.点击父级节点 将父级节点下children中所有id放入数组 2.点击父级下的子节点 将点击的子节点放入数组 3.取消选择父节点&#xff0c;将放入数组的所有子节点id删除 4.根据选择的子节点数组&#xff0c;匹配他所属的父节点 <el-tree:data"tre…

Docker——compose单机容器集群编排

Docker——compose单机容器集群编排 一、Docker-compose概述1.为何需要Docker-compose2.Docker-compose 的特征3.Docker-compose 的优势4.Docker-compose 的劣势5.Docker-compose 的生产环境 二、Docker Compose 环境安装三、YAML 文件格式及编写注意事项四、Docker Compose配置…

Spin语法

消息传递 消息通道用于对数据从一个过程到另一个过程的传输进行建模。它们在本地或全局上声明,如下所示: chan qname = [16] of {short}这将声明一个通道,该通道最多可以存储16个short类型的消息。通道名称可以通过通道从一个进程传递到另一进程,也可以作为进程实例化中的…