微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql源码分析--解析sql--类型系统

希望能够搞明白在sql进行解析的时候postgresql是如何决定要进行类型转换的以及解析的过程中值是以什么方式保存的,最后希望能够了解到postgresql在执行时是如何比较这些值的.

parse_expr.c的transformExpr中值的解析,在T_A_Const中,可以看到对于一个操作的值是以Value类型保存的,从value的注释中可以看到,除了int类型外,其它的诸如float等都是直接用string保存的.

  • T_A_Indirection

查看A_Indirection的定义注释中的一个例子(foo).field1[42][7].field2,就能够理解他的含义


gram.y中

AexprConst表示所有的constant类型,


parse_oper.c

函数make_op中出现了检查类型兼容的调用,调用函数enforce_generic_type_consistency

parse_coerce.c中是检查类型兼容性的代码,有两千六百多行,得慢慢看了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐