apache calcite源码阅读(三)org.apache.calcite.sql.validate下的接口SqlValidator 方法解析

`SqlValidator` 的接口,用于验证和处理 SQL 查询语句。下面对其中的方法进行详细解释:

1. `getCatalogReader()` 方法:获取用于解析和访问数据库模式的 `SqlValidatorCatalogReader` 对象。

2. `getOperatorTable()` 方法:获取用于查找和操作 SQL 运算符的 `SqlOperatorTable` 对象。

3. `validate(SqlNode var1)` 方法:对给定的 SQL 节点进行验证,并返回验证后的 SQL 节点。

4. `validateParameterizedExpression(SqlNode var1, Map<String, RelDataType> var2)` 方法:验证具有参数的 SQL 表达式,并使用给定的参数类型映射。

5. `validateQuery(SqlNode var1, @Nullable SqlValidatorScope var2, RelDataType var3)` 方法:验证查询语句,并指定查询的作用域和结果类型。

6. `getValidatedNodeType(SqlNode var1)` 方法:获取给定 SQL 节点的验证后数据类型。

7. `getValidatedNodeTypeIfKnown(SqlNode var1)` 方法:获取给定 SQL 节点的验证后数据类型,如果未知则返回 `null`。

8. `getValidatedOperandTypes(SqlCall var1)` 方法:获取给定 SQL 调用的验证后操作数类型列表。

9. `validateIdentifier(SqlIdentifier var1, SqlValidatorScope var2)` 方法:验证标识符,并指定标识符的作用域。

10. `validateLiteral(SqlLiteral var1)` 方法:验证字面量。

11. `validateIntervalQualifier(SqlIntervalQualifier var1)` 方法:验证间隔限定符。

12. `validateInsert(SqlInsert var1)` 方法:验证 INSERT 语句。

13. `validateUpdate(SqlUpdate var1)` 方法:验证 UPDATE 语句。

14. `validateDelete(SqlDelete var1)` 方法:验证 DELETE 语句。

15. `validateMerge(SqlMerge var1)` 方法:验证 MERGE 语句。

16. `validateDataType(SqlDataTypeSpec var1)` 方法:验证数据类型。

17. `validateDynamicParam(SqlDynamicParam var1)` 方法:验证动态参数。

18. `validateWindow(SqlNode var1, SqlValidatorScope var2, @Nullable SqlCall var3)` 方法:验证窗口声明。

19. `validateMatchRecognize(SqlCall var1)` 方法:验证 MATCH_RECOGNIZE 语句。

20. `validateCall(SqlCall var1, SqlValidatorScope var2)` 方法:验证 SQL 调用。

21. `validateAggregateParams(SqlCall var1, @Nullable SqlNode var2, @Nullable SqlNodeList var3, @Nullable SqlNodeList var4, SqlValidatorScope var5)` 方法:验证聚合函数的参数。

22. `validateColumnListParams(SqlFunction var1, List<RelDataType> var2, List<SqlNode> var3)` 方法:验证列列表参数。

23. `makeNullaryCall(SqlIdentifier var1)` 方法:创建一个不带参数的 SQL 调用。

24. `deriveType(SqlValidatorScope var1, SqlNode var2)` 方法:推导 SQL 节点的数据类型。

25. `newValidationError(SqlNode var1, ExInst<SqlValidatorException> var2)` 方法:创建一个新的验证错误。

26. `isAggregate(SqlSelect var1)` 方法:检查 SELECT 语句是否包含聚合函数。

27. `resolveWindow(SqlNode var1, SqlValidatorScope var2)` 方法:解析窗口。

28. `getNamespace(SqlNode var1)` 方法:获取给定 SQL 节点的命名空间。

29. `deriveAlias(SqlNode var1, int var2)` 方法:推导 SQL 节点的别名。

30. `expandStar(SqlNodeList var1, SqlSelect var2, boolean var3)` 方法:展开 SELECT 语句中的星号(*)。

31. `getWhereScope(SqlSelect var1)` 方法:获取 WHERE 子句的作用域。

32. `getTypeFactory()` 方法:获取用于创建和操作数据类型的 `RelDataTypeFactory` 对象。

33. `setValidatedNodeType(SqlNode var1, RelDataType var2)` 方法:设置给定 SQL 节点的验证后数据类型。

34. `removeValidatedNodeType(SqlNode var1)` 方法:移除给定 SQL 节点的验证后数据类型。

35. `getUnknownType()` 方法:获取未知数据类型。

36. `getSelectScope(SqlSelect var1)` 方法:获取 SELECT 子句的作用域。

37. `getRawSelectScope(SqlSelect var1)` 方法:获取 SELECT 子句的原始作用域。

38. `getFromScope(SqlSelect var1)` 方法:获取 FROM 子句的作用域。

39. `getJoinScope(SqlNode var1)` 方法:获取 JOIN 子句的作用域。

40. `getGroupScope(SqlSelect var1)` 方法:获取 GROUP BY 子句的作用域。

41. `getHavingScope(SqlSelect var1)` 方法:获取 HAVING 子句的作用域。

42. `getOrderScope(SqlSelect var1)` 方法:获取 ORDER BY 子句的作用域。

43. `getMatchRecognizeScope(SqlMatchRecognize var1)` 方法:获取 MATCH_RECOGNIZE 子句的作用域。

44. `declareCursor(SqlSelect var1, SqlValidatorScope var2)` 方法:声明游标。

45. `pushFunctionCall()` 方法:将函数调用推入函数调用堆栈。

46. `popFunctionCall()` 方法:从函数调用堆栈中弹出函数调用。

47. `getParentCursor(String var1)` 方法:获取父游标。

48. `deriveConstructorType(SqlValidatorScope var1, SqlCall var2, SqlFunction var3, @Nullable SqlFunction var4, List<RelDataType> var5)` 方法:推导构造函数的数据类型。

49. `handleUnresolvedFunction(SqlCall var1, SqlOperator var2, List<RelDataType> var3, @Nullable List<String> var4)` 方法:处理未解析的函数。

50. `expandOrderExpr(SqlSelect var1, SqlNode var2)` 方法:展开 ORDER BY 表达式。

51. `expand(SqlNode var1, SqlValidatorScope var2)` 方法:展开 SQL 节点。

52. `isSystemField(RelDataTypeField var1)` 方法:检查字段是否为系统字段。

53. `getFieldOrigins(SqlNode var1)` 方法:获取字段的来源信息。

54. `getParameterRowType(SqlNode var1)` 方法:获取参数的行类型。

55. `getOverScope(SqlNode var1)` 方法:获取 OVER 子句的作用域。

56. `validateModality(SqlSelect var1, SqlModality var2, boolean var3)` 方法:验证 SQL 的模态。

57. `validateWith(SqlWith var1, SqlValidatorScope var2)` 方法:验证 WITH 子句。

58. `validateWithItem(SqlWithItem var1)` 方法:验证 WITH 子句的项。

59. `validateSequenceValue(SqlValidatorScope var1, SqlIdentifier var2)` 方法:验证序列值。

60. `getWithScope(SqlNode var1)` 方法:获取 WITH 子句的作用域。

61. `getTypeCoercion()` 方法:获取类型转换。

62. `config()` 方法:获取 SQL 验证器的配置。

63. `transform(UnaryOperator<SqlValidator.Config> var1)` 方法:通过应用给定的配置转换 SQL 验证器。

64. `SqlValidator.Config` 接口:SQL 验证器的配置接口。

以上是 `org.apache.calcite.sql.validate.SqlValidator` 接口中定义的一些重要方法及其用途。
这些方法提供了 SQL 语句的验证、解析和类型推导的功能,用于构建一个符合语法和语义规则的有效 SQL 查询计划。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值