`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 查询计划。