pg_query 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +162 -40
  3. data/README.md +80 -69
  4. data/Rakefile +85 -4
  5. data/ext/pg_query/extconf.rb +4 -32
  6. data/ext/pg_query/guc-file.c +0 -0
  7. data/ext/pg_query/pg_query.c +104 -0
  8. data/ext/pg_query/pg_query.pb-c.c +37628 -0
  9. data/ext/pg_query/pg_query_deparse.c +9953 -0
  10. data/ext/pg_query/pg_query_fingerprint.c +292 -0
  11. data/ext/pg_query/pg_query_fingerprint.h +8 -0
  12. data/ext/pg_query/pg_query_internal.h +24 -0
  13. data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
  14. data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
  15. data/ext/pg_query/pg_query_normalize.c +437 -0
  16. data/ext/pg_query/pg_query_outfuncs.h +10 -0
  17. data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
  18. data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
  19. data/ext/pg_query/pg_query_parse.c +148 -0
  20. data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
  21. data/ext/pg_query/pg_query_readfuncs.h +11 -0
  22. data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
  23. data/ext/pg_query/pg_query_ruby.c +108 -12
  24. data/ext/pg_query/pg_query_scan.c +173 -0
  25. data/ext/pg_query/pg_query_split.c +221 -0
  26. data/ext/pg_query/protobuf-c.c +3660 -0
  27. data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
  28. data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
  29. data/ext/pg_query/src_backend_commands_define.c +117 -0
  30. data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
  31. data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
  32. data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
  33. data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
  34. data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
  35. data/ext/pg_query/src_backend_nodes_list.c +922 -0
  36. data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
  37. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
  38. data/ext/pg_query/src_backend_nodes_value.c +84 -0
  39. data/ext/pg_query/src_backend_parser_gram.c +47456 -0
  40. data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
  41. data/ext/pg_query/src_backend_parser_parser.c +497 -0
  42. data/ext/pg_query/src_backend_parser_scan.c +7091 -0
  43. data/ext/pg_query/src_backend_parser_scansup.c +160 -0
  44. data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
  45. data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
  46. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
  47. data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
  48. data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
  49. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
  50. data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
  51. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
  52. data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
  53. data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
  54. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
  55. data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
  56. data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
  57. data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
  58. data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
  59. data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
  60. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
  61. data/ext/pg_query/src_common_encnames.c +158 -0
  62. data/ext/pg_query/src_common_keywords.c +39 -0
  63. data/ext/pg_query/src_common_kwlist_d.h +1081 -0
  64. data/ext/pg_query/src_common_kwlookup.c +91 -0
  65. data/ext/pg_query/src_common_psprintf.c +158 -0
  66. data/ext/pg_query/src_common_string.c +86 -0
  67. data/ext/pg_query/src_common_stringinfo.c +336 -0
  68. data/ext/pg_query/src_common_wchar.c +1651 -0
  69. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
  70. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
  71. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
  72. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
  73. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
  74. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
  75. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
  76. data/ext/pg_query/src_port_erand48.c +127 -0
  77. data/ext/pg_query/src_port_pg_bitutils.c +246 -0
  78. data/ext/pg_query/src_port_pgsleep.c +69 -0
  79. data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
  80. data/ext/pg_query/src_port_qsort.c +240 -0
  81. data/ext/pg_query/src_port_random.c +31 -0
  82. data/ext/pg_query/src_port_snprintf.c +1449 -0
  83. data/ext/pg_query/src_port_strerror.c +324 -0
  84. data/ext/pg_query/src_port_strnlen.c +39 -0
  85. data/ext/pg_query/xxhash.c +43 -0
  86. data/lib/pg_query.rb +7 -4
  87. data/lib/pg_query/constants.rb +21 -0
  88. data/lib/pg_query/deparse.rb +16 -991
  89. data/lib/pg_query/filter_columns.rb +86 -85
  90. data/lib/pg_query/fingerprint.rb +122 -87
  91. data/lib/pg_query/json_field_names.rb +1402 -0
  92. data/lib/pg_query/node.rb +31 -0
  93. data/lib/pg_query/param_refs.rb +42 -37
  94. data/lib/pg_query/parse.rb +220 -200
  95. data/lib/pg_query/parse_error.rb +1 -1
  96. data/lib/pg_query/pg_query_pb.rb +3211 -0
  97. data/lib/pg_query/scan.rb +23 -0
  98. data/lib/pg_query/treewalker.rb +24 -40
  99. data/lib/pg_query/truncate.rb +64 -43
  100. data/lib/pg_query/version.rb +2 -2
  101. metadata +102 -11
  102. data/ext/pg_query/pg_query_ruby.h +0 -10
  103. data/lib/pg_query/deep_dup.rb +0 -16
  104. data/lib/pg_query/deparse/alter_table.rb +0 -42
  105. data/lib/pg_query/deparse/interval.rb +0 -105
  106. data/lib/pg_query/legacy_parsetree.rb +0 -109
  107. data/lib/pg_query/node_types.rb +0 -282
@@ -1,105 +0,0 @@
1
- class PgQuery
2
- module Deparse
3
- module Interval
4
- # A type called 'interval hour to minute' is stored in a compressed way by
5
- # simplifying 'hour to minute' to a simple integer. This integer is computed
6
- # by looking up the arbitrary number (always a power of two) for 'hour' and
7
- # the one for 'minute' and XORing them together.
8
- #
9
- # For example, when parsing "interval hour to minute":
10
- #
11
- # HOUR_MASK = 10
12
- # MINUTE_MASK = 11
13
- # mask = (1 << 10) | (1 << 11)
14
- # mask = 1024 | 2048
15
- # mask = (010000000000
16
- # xor
17
- # 100000000000)
18
- # mask = 110000000000
19
- # mask = 3072
20
- #
21
- # Postgres will store this type as 'interval,3072'
22
- # We deparse it by simply reversing that process.
23
- #
24
- def self.from_int(int)
25
- SQL_BY_MASK[int]
26
- end
27
-
28
- # From src/include/utils/datetime.h
29
- # The number is the power of 2 used for the mask.
30
- MASKS = {
31
- 0 => 'RESERV',
32
- 1 => 'MONTH',
33
- 2 => 'YEAR',
34
- 3 => 'DAY',
35
- 4 => 'JULIAN',
36
- 5 => 'TZ',
37
- 6 => 'DTZ',
38
- 7 => 'DYNTZ',
39
- 8 => 'IGNORE_DTF',
40
- 9 => 'AMPM',
41
- 10 => 'HOUR',
42
- 11 => 'MINUTE',
43
- 12 => 'SECOND',
44
- 13 => 'MILLISECOND',
45
- 14 => 'MICROSECOND',
46
- 15 => 'DOY',
47
- 16 => 'DOW',
48
- 17 => 'UNITS',
49
- 18 => 'ADBC',
50
- 19 => 'AGO',
51
- 20 => 'ABS_BEFORE',
52
- 21 => 'ABS_AFTER',
53
- 22 => 'ISODATE',
54
- 23 => 'ISOTIME',
55
- 24 => 'WEEK',
56
- 25 => 'DECADE',
57
- 26 => 'CENTURY',
58
- 27 => 'MILLENNIUM',
59
- 28 => 'DTZMOD'
60
- }.freeze
61
- KEYS = MASKS.invert
62
-
63
- # Postgres stores the interval 'day second' as 'day hour minute second' so
64
- # we need to reconstruct the sql with only the largest and smallest time
65
- # values. Since the rules for this are hardcoded in the grammar (and the
66
- # above list is not sorted in any sensible way) it makes sense to hardcode
67
- # the patterns here, too.
68
- #
69
- # This hash takes the form:
70
- #
71
- # { (1 << 1) | (1 << 2) => 'year to month' }
72
- #
73
- # Which is:
74
- #
75
- # { 6 => 'year to month' }
76
- #
77
- SQL_BY_MASK = {
78
- (1 << KEYS['YEAR']) => %w[year],
79
- (1 << KEYS['MONTH']) => %w[month],
80
- (1 << KEYS['DAY']) => %w[day],
81
- (1 << KEYS['HOUR']) => %w[hour],
82
- (1 << KEYS['MINUTE']) => %w[minute],
83
- (1 << KEYS['SECOND']) => %w[second],
84
- (1 << KEYS['YEAR'] |
85
- 1 << KEYS['MONTH']) => %w[year month],
86
- (1 << KEYS['DAY'] |
87
- 1 << KEYS['HOUR']) => %w[day hour],
88
- (1 << KEYS['DAY'] |
89
- 1 << KEYS['HOUR'] |
90
- 1 << KEYS['MINUTE']) => %w[day minute],
91
- (1 << KEYS['DAY'] |
92
- 1 << KEYS['HOUR'] |
93
- 1 << KEYS['MINUTE'] |
94
- 1 << KEYS['SECOND']) => %w[day second],
95
- (1 << KEYS['HOUR'] |
96
- 1 << KEYS['MINUTE']) => %w[hour minute],
97
- (1 << KEYS['HOUR'] |
98
- 1 << KEYS['MINUTE'] |
99
- 1 << KEYS['SECOND']) => %w[hour second],
100
- (1 << KEYS['MINUTE'] |
101
- 1 << KEYS['SECOND']) => %w[minute second]
102
- }.freeze
103
- end
104
- end
105
- end
@@ -1,109 +0,0 @@
1
- class PgQuery
2
- # Legacy parsetree from 0.7 and earlier versions - migrate to "tree" format if you can
3
- def parsetree # rubocop:disable Metrics/CyclomaticComplexity
4
- @parsetree ||= transform_nodes!(@tree) do |raw_node|
5
- node = raw_node.keys[0] == RAW_STMT ? raw_node.delete(RAW_STMT)[STMT_FIELD] : raw_node
6
-
7
- key = node.keys[0]
8
- new_key = LEGACY_NODE_NAMES[key] || key.upcase
9
-
10
- case key
11
- when A_CONST
12
- transform_parsetree_a_const(node)
13
- when A_EXPR
14
- node[A_EXPR]['name'] = transform_string_list(node[A_EXPR]['name'])
15
- node[key].delete('kind')
16
- when COLUMN_REF
17
- node[COLUMN_REF]['fields'] = transform_string_list(node[COLUMN_REF]['fields'])
18
- when CREATE_FUNCTION_STMT
19
- node[CREATE_FUNCTION_STMT]['funcname'] = transform_string_list(node[CREATE_FUNCTION_STMT]['funcname'])
20
- when CREATE_TRIG_STMT
21
- node[CREATE_TRIG_STMT]['funcname'] = transform_string_list(node[CREATE_TRIG_STMT]['funcname'])
22
- when CONSTRAINT
23
- node[CONSTRAINT]['contype'] = LEGACY_CONSTRAINT_TYPES[node[CONSTRAINT]['contype']]
24
- node[CONSTRAINT]['keys'] = transform_string_list(node[CONSTRAINT]['keys'])
25
- when COPY_STMT
26
- node[COPY_STMT]['attlist'] = transform_string_list(node[COPY_STMT]['attlist'])
27
- when DEF_ELEM
28
- node[DEF_ELEM]['arg'] = node[DEF_ELEM]['arg'][INTEGER]['ival'] if node[DEF_ELEM]['arg'].is_a?(Hash) && node[DEF_ELEM]['arg'].keys[0] == INTEGER
29
- node[DEF_ELEM]['arg'] = node[DEF_ELEM]['arg'][STRING]['str'] if node[DEF_ELEM]['arg'].is_a?(Hash) && node[DEF_ELEM]['arg'].keys[0] == STRING
30
- node[DEF_ELEM]['arg'] = transform_string_list(node[DEF_ELEM]['arg']) if node[DEF_ELEM]['arg'].is_a?(Array)
31
- when DROP_STMT
32
- node[DROP_STMT]['objects'].each_with_index do |obj, idx|
33
- node[DROP_STMT]['objects'][idx] = transform_string_list(obj)
34
- end
35
- when FUNC_CALL
36
- node[FUNC_CALL]['funcname'] = transform_string_list(node[FUNC_CALL]['funcname'])
37
- when GRANT_ROLE_STMT
38
- node[GRANT_ROLE_STMT]['grantee_roles'] = transform_string_list(node[GRANT_ROLE_STMT]['grantee_roles'])
39
- when RANGE_VAR
40
- node[RANGE_VAR]['inhOpt'] = node[RANGE_VAR].delete('inh') ? 2 : 0
41
- when TYPE_NAME
42
- node[TYPE_NAME]['names'] = transform_string_list(node[TYPE_NAME]['names'])
43
- end
44
-
45
- raw_node[new_key] = node.delete(key)
46
- end
47
- end
48
-
49
- private
50
-
51
- LEGACY_NODE_NAMES = {
52
- A_EXPR => 'AEXPR',
53
- SELECT_STMT => 'SELECT',
54
- ALTER_TABLE_CMD => 'ALTER TABLE CMD',
55
- ALTER_TABLE_STMT => 'ALTER TABLE',
56
- CHECK_POINT_STMT => 'CHECKPOINT',
57
- CREATE_SCHEMA_STMT => 'CREATE SCHEMA',
58
- CREATE_TABLE_AS_STMT => 'CREATE TABLE AS',
59
- COPY_STMT => 'COPY',
60
- DELETE_STMT => 'DELETE FROM',
61
- DROP_STMT => 'DROP',
62
- INSERT_STMT => 'INSERT INTO',
63
- EXPLAIN_STMT => 'EXPLAIN',
64
- LOCK_STMT => 'LOCK',
65
- TRANSACTION_STMT => 'TRANSACTION',
66
- TRUNCATE_STMT => 'TRUNCATE',
67
- UPDATE_STMT => 'UPDATE',
68
- VACUUM_STMT => 'VACUUM',
69
- VARIABLE_SET_STMT => 'SET',
70
- VARIABLE_SHOW_STMT => 'SHOW'
71
- # All others default to simply upper-casing the input name
72
- }.freeze
73
-
74
- LEGACY_CONSTRAINT_TYPES = {
75
- CONSTR_TYPE_PRIMARY => 'PRIMARY_KEY'
76
- }.freeze
77
-
78
- def transform_parsetree_a_const(node)
79
- type_key = node[A_CONST]['val'].keys[0]
80
-
81
- case type_key
82
- when INTEGER
83
- node[A_CONST]['type'] = 'integer'
84
- node[A_CONST]['val'] = node[A_CONST]['val'][INTEGER]['ival']
85
- when STRING
86
- node[A_CONST]['type'] = 'string'
87
- node[A_CONST]['val'] = node[A_CONST]['val'][STRING]['str']
88
- when FLOAT
89
- node[A_CONST]['type'] = 'float'
90
- node[A_CONST]['val'] = node[A_CONST]['val'][FLOAT]['str'].to_f
91
- when BIT_STRING
92
- node[A_CONST]['type'] = 'bitstring'
93
- node[A_CONST]['val'] = node[A_CONST]['val'][BIT_STRING]['str']
94
- when NULL
95
- node[A_CONST]['type'] = 'null'
96
- node[A_CONST]['val'] = nil
97
- end
98
- end
99
-
100
- def transform_string_list(list)
101
- return if list.nil?
102
-
103
- if list.is_a?(Array)
104
- list.map { |node| node.keys[0] == STRING ? node[STRING]['str'] : node }
105
- else
106
- [list.keys[0] == STRING ? list[STRING]['str'] : list]
107
- end
108
- end
109
- end
@@ -1,282 +0,0 @@
1
- # rubocop:disable Style/ConstantName
2
- class PgQuery
3
- # NODE TYPES
4
-
5
- A_ARRAY_EXPR = 'A_ArrayExpr'.freeze
6
- A_CONST = 'A_Const'.freeze
7
- A_EXPR = 'A_Expr'.freeze
8
- A_INDICES = 'A_Indices'.freeze
9
- A_INDIRECTION = 'A_Indirection'.freeze
10
- A_STAR = 'A_Star'.freeze
11
- ACCESS_PRIV = 'AccessPriv'.freeze
12
- ALIAS = 'Alias'.freeze
13
- ALTER_TABLE_CMD = 'AlterTableCmd'.freeze
14
- ALTER_TABLE_STMT = 'AlterTableStmt'.freeze
15
- BIT_STRING = 'BitString'.freeze
16
- BOOL_EXPR = 'BoolExpr'.freeze
17
- BOOLEAN_TEST = 'BooleanTest'.freeze
18
- CASE_EXPR = 'CaseExpr'.freeze
19
- CASE_WHEN = 'CaseWhen'.freeze
20
- CHECK_POINT_STMT = 'CheckPointStmt'.freeze
21
- CLOSE_PORTAL_STMT = 'ClosePortalStmt'.freeze
22
- COALESCE_EXPR = 'CoalesceExpr'.freeze
23
- COLUMN_DEF = 'ColumnDef'.freeze
24
- COLUMN_REF = 'ColumnRef'.freeze
25
- COMMON_TABLE_EXPR = 'CommonTableExpr'.freeze
26
- CONSTRAINT = 'Constraint'.freeze
27
- COPY_STMT = 'CopyStmt'.freeze
28
- CREATE_FUNCTION_STMT = 'CreateFunctionStmt'.freeze
29
- CREATE_SCHEMA_STMT = 'CreateSchemaStmt'.freeze
30
- CREATE_STMT = 'CreateStmt'.freeze
31
- CREATE_TABLE_AS_STMT = 'CreateTableAsStmt'.freeze
32
- CREATE_TRIG_STMT = 'CreateTrigStmt'.freeze
33
- DEALLOCATE_STMT = 'DeallocateStmt'.freeze
34
- DECLARE_CURSOR_STMT = 'DeclareCursorStmt'.freeze
35
- DEF_ELEM = 'DefElem'.freeze
36
- DELETE_STMT = 'DeleteStmt'.freeze
37
- DROP_STMT = 'DropStmt'.freeze
38
- EXECUTE_STMT = 'ExecuteStmt'.freeze
39
- EXPLAIN_STMT = 'ExplainStmt'.freeze
40
- FETCH_STMT = 'FetchStmt'.freeze
41
- FLOAT = 'Float'.freeze
42
- FUNC_CALL = 'FuncCall'.freeze
43
- FUNCTION_PARAMETER = 'FunctionParameter'.freeze
44
- GRANT_ROLE_STMT = 'GrantRoleStmt'.freeze
45
- GRANT_STMT = 'GrantStmt'.freeze
46
- INDEX_ELEM = 'IndexElem'.freeze
47
- INDEX_STMT = 'IndexStmt'.freeze
48
- INSERT_STMT = 'InsertStmt'.freeze
49
- INT_LIST = 'IntList'.freeze
50
- INTEGER = 'Integer'.freeze
51
- INTO_CLAUSE = 'IntoClause'.freeze
52
- JOIN_EXPR = 'JoinExpr'.freeze
53
- LOCK_STMT = 'LockStmt'.freeze
54
- LOCKING_CLAUSE = 'LockingClause'.freeze
55
- NULL = 'Null'.freeze
56
- NULL_TEST = 'NullTest'.freeze
57
- OID_LIST = 'OidList'.freeze
58
- PARAM_REF = 'ParamRef'.freeze
59
- PREPARE_STMT = 'PrepareStmt'.freeze
60
- RANGE_FUNCTION = 'RangeFunction'.freeze
61
- RANGE_SUBSELECT = 'RangeSubselect'.freeze
62
- RANGE_VAR = 'RangeVar'.freeze
63
- RAW_STMT = 'RawStmt'.freeze
64
- REFRESH_MAT_VIEW_STMT = 'RefreshMatViewStmt'.freeze
65
- RENAME_STMT = 'RenameStmt'.freeze
66
- RES_TARGET = 'ResTarget'.freeze
67
- ROLE_SPEC = 'RoleSpec'.freeze
68
- ROW_EXPR = 'RowExpr'.freeze
69
- RULE_STMT = 'RuleStmt'.freeze
70
- SELECT_STMT = 'SelectStmt'.freeze
71
- SET_TO_DEFAULT = 'SetToDefault'.freeze
72
- SORT_BY = 'SortBy'.freeze
73
- STRING = 'String'.freeze
74
- SUB_LINK = 'SubLink'.freeze
75
- TRANSACTION_STMT = 'TransactionStmt'.freeze
76
- TRUNCATE_STMT = 'TruncateStmt'.freeze
77
- TYPE_CAST = 'TypeCast'.freeze
78
- TYPE_NAME = 'TypeName'.freeze
79
- UPDATE_STMT = 'UpdateStmt'.freeze
80
- VACUUM_STMT = 'VacuumStmt'.freeze
81
- VARIABLE_SET_STMT = 'VariableSetStmt'.freeze
82
- VARIABLE_SHOW_STMT = 'VariableShowStmt'.freeze
83
- VIEW_STMT = 'ViewStmt'.freeze
84
- WINDOW_DEF = 'WindowDef'.freeze
85
- WITH_CLAUSE = 'WithClause'.freeze
86
-
87
- # FIELDS
88
-
89
- COLS_FIELD = 'cols'.freeze
90
- FROM_CLAUSE_FIELD = 'fromClause'.freeze
91
- RELPERSISTENCE_FIELD = 'relpersistence'.freeze
92
- REXPR_FIELD = 'rexpr'.freeze
93
- STMT_FIELD = 'stmt'.freeze
94
- TARGET_LIST_FIELD = 'targetList'.freeze
95
- VALUES_LISTS_FIELD = 'valuesLists'.freeze
96
-
97
- # ENUMS
98
-
99
- CONSTR_TYPE_NULL = 0 # not standard SQL, but a lot of people expect it
100
- CONSTR_TYPE_NOTNULL = 1
101
- CONSTR_TYPE_DEFAULT = 2
102
- CONSTR_TYPE_IDENTITY = 3
103
- CONSTR_TYPE_CHECK = 4
104
- CONSTR_TYPE_PRIMARY = 5
105
- CONSTR_TYPE_UNIQUE = 6
106
- CONSTR_TYPE_EXCLUSION = 7
107
- CONSTR_TYPE_FOREIGN = 8
108
- CONSTR_TYPE_ATTR_DEFERRABLE = 9 # attributes for previous constraint node
109
- CONSTR_TYPE_ATTR_NOT_DEFERRABLE = 10
110
- CONSTR_TYPE_ATTR_DEFERRED = 11
111
- CONSTR_TYPE_ATTR_IMMEDIATE = 12
112
-
113
- OBJECT_TYPE_ACCESS_METHOD = 0
114
- OBJECT_TYPE_AGGREGATE = 1
115
- OBJECT_TYPE_AMOP = 2
116
- OBJECT_TYPE_AMPROC = 3
117
- OBJECT_TYPE_ATTRIBUTE = 4
118
- OBJECT_TYPE_CAST = 5
119
- OBJECT_TYPE_COLUMN = 6
120
- OBJECT_TYPE_COLLATION = 7
121
- OBJECT_TYPE_CONVERSION = 8
122
- OBJECT_TYPE_DATABASE = 9
123
- OBJECT_TYPE_DEFAULT = 10
124
- OBJECT_TYPE_DEFACL = 11
125
- OBJECT_TYPE_DOMAIN = 12
126
- OBJECT_TYPE_DOMCONSTRAINT = 13
127
- OBJECT_TYPE_EVENT_TRIGGER = 14
128
- OBJECT_TYPE_EXTENSION = 15
129
- OBJECT_TYPE_FDW = 16
130
- OBJECT_TYPE_FOREIGN_SERVER = 17
131
- OBJECT_TYPE_FOREIGN_TABLE = 18
132
- OBJECT_TYPE_FUNCTION = 19
133
- OBJECT_TYPE_INDEX = 20
134
- OBJECT_TYPE_LANGUAGE = 21
135
- OBJECT_TYPE_LARGEOBJECT = 22
136
- OBJECT_TYPE_MATVIEW = 23
137
- OBJECT_TYPE_OPCLASS = 24
138
- OBJECT_TYPE_OPERATOR = 25
139
- OBJECT_TYPE_OPFAMILY = 26
140
- OBJECT_TYPE_POLICY = 27
141
- OBJECT_TYPE_PUBLICATION = 28
142
- OBJECT_TYPE_PUBLICATION_REL = 29
143
- OBJECT_TYPE_ROLE = 30
144
- OBJECT_TYPE_RULE = 31
145
- OBJECT_TYPE_SCHEMA = 32
146
- OBJECT_TYPE_SEQUENCE = 33
147
- OBJECT_TYPE_SUBSCRIPTION = 34
148
- OBJECT_TYPE_STATISTIC_EXT = 35
149
- OBJECT_TYPE_TABCONSTRAINT = 36
150
- OBJECT_TYPE_TABLE = 37
151
- OBJECT_TYPE_TABLESPACE = 38
152
- OBJECT_TYPE_TRANSFORM = 39
153
- OBJECT_TYPE_TRIGGER = 40
154
- OBJECT_TYPE_TSCONFIGURATION = 41
155
- OBJECT_TYPE_TSDICTIONARY = 42
156
- OBJECT_TYPE_TSPARSER = 43
157
- OBJECT_TYPE_TSTEMPLATE = 44
158
- OBJECT_TYPE_TYPE = 45
159
- OBJECT_TYPE_USER_MAPPING = 46
160
- OBJECT_TYPE_VIEW = 47
161
-
162
- BOOL_EXPR_AND = 0
163
- BOOL_EXPR_OR = 1
164
- BOOL_EXPR_NOT = 2
165
-
166
- BOOLEAN_TEST_TRUE = 0
167
- BOOLEAN_TEST_NOT_TRUE = 1
168
- BOOLEAN_TEST_FALSE = 2
169
- BOOLEAN_TEST_NOT_FALSE = 3
170
- BOOLEAN_TEST_UNKNOWN = 4
171
- BOOLEAN_TEST_NOT_UNKNOWN = 5
172
-
173
- AEXPR_OP = 0 # normal operator
174
- AEXPR_OP_ANY = 1 # scalar op ANY (array)
175
- AEXPR_OP_ALL = 2 # scalar op ALL (array)
176
- AEXPR_DISTINCT = 3 # IS DISTINCT FROM - name must be "="
177
- AEXPR_NOT_DISTINCT = 4 # IS NOT DISTINCT FROM - name must be "="
178
- AEXPR_NULLIF = 5 # NULLIF - name must be "="
179
- AEXPR_OF = 6 # IS [NOT] OF - name must be "=" or "<>"
180
- AEXPR_IN = 7 # [NOT] IN - name must be "=" or "<>"
181
- AEXPR_LIKE = 8 # [NOT] LIKE - name must be "~~" or "!~~"
182
- AEXPR_ILIKE = 9 # [NOT] ILIKE - name must be "~~*" or "!~~*"
183
- AEXPR_SIMILAR = 10 # [NOT] SIMILAR - name must be "~" or "!~"
184
- AEXPR_BETWEEN = 11 # name must be "BETWEEN"
185
- AEXPR_NOT_BETWEEN = 12 # name must be "NOT BETWEEN"
186
- AEXPR_BETWEEN_SYM = 13 # name must be "BETWEEN SYMMETRIC"
187
- AEXPR_NOT_BETWEEN_SYM = 14 # name must be "NOT BETWEEN SYMMETRIC"
188
- AEXPR_PAREN = 15 # nameless dummy node for parentheses
189
-
190
- TRANS_STMT_BEGIN = 0
191
- TRANS_STMT_START = 1 # semantically identical to BEGIN
192
- TRANS_STMT_COMMIT = 2
193
- TRANS_STMT_ROLLBACK = 3
194
- TRANS_STMT_SAVEPOINT = 4
195
- TRANS_STMT_RELEASE = 5
196
- TRANS_STMT_ROLLBACK_TO = 6
197
- TRANS_STMT_PREPARE = 7
198
- TRANS_STMT_COMMIT_PREPARED = 8
199
- TRANS_STMT_ROLLBACK_PREPARED = 9
200
-
201
- SUBLINK_TYPE_EXISTS = 0 # EXISTS(SELECT ...)
202
- SUBLINK_TYPE_ALL = 1 # (lefthand) op ALL (SELECT ...)
203
- SUBLINK_TYPE_ANY = 2 # (lefthand) op ANY (SELECT ...)
204
- SUBLINK_TYPE_ROWCOMPARE = 3 # (lefthand) op (SELECT ...)
205
- SUBLINK_TYPE_EXPR = 4 # (SELECT with single targetlist item ...)
206
- SUBLINK_TYPE_MULTIEXPR = 5 # (SELECT with multiple targetlist items ...)
207
- SUBLINK_TYPE_ARRAY = 6 # ARRAY(SELECT with single targetlist item ...)
208
- SUBLINK_TYPE_CTE = 7 # WITH query (never actually part of an expression), for SubPlans only
209
-
210
- LCS_NONE = 0 # no such clause - only used in PlanRowMark
211
- LCS_FORKEYSHARE = 1 # FOR KEY SHARE
212
- LCS_FORSHARE = 2 # FOR SHARE
213
- LCS_FORNOKEYUPDATE = 3 # FOR NO KEY UPDATE
214
- LCS_FORUPDATE = 4 # FOR UPDATE
215
-
216
- AT_AddColumn = 0 # add column
217
- AT_AddColumnRecurse = 1 # internal to commands/tablecmds.c
218
- AT_AddColumnToView = 2 # implicitly via CREATE OR REPLACE VIEW
219
- AT_ColumnDefault = 3 # alter column default
220
- AT_DropNotNull = 4 # alter column drop not null
221
- AT_SetNotNull = 5 # alter column set not null
222
- AT_SetStatistics = 6 # alter column set statistics
223
- AT_SetOptions = 7 # alter column set ( options )
224
- AT_ResetOptions = 8 # alter column reset ( options )
225
- AT_SetStorage = 9 # alter column set storage
226
- AT_DropColumn = 10 # drop column
227
- AT_DropColumnRecurse = 11 # internal to commands/tablecmds.c
228
- AT_AddIndex = 12 # add index
229
- AT_ReAddIndex = 13 # internal to commands/tablecmds.c
230
- AT_AddConstraint = 14 # add constraint
231
- AT_AddConstraintRecurse = 15 # internal to commands/tablecmds.c
232
- AT_ReAddConstraint = 16 # internal to commands/tablecmds.c
233
- AT_AlterConstraint = 17 # alter constraint
234
- AT_ValidateConstraint = 18 # validate constraint
235
- AT_ValidateConstraintRecurse = 19 # internal to commands/tablecmds.c
236
- AT_ProcessedConstraint = 20 # pre-processed add constraint (local in parser/parse_utilcmd.c)
237
- AT_AddIndexConstraint = 21 # add constraint using existing index
238
- AT_DropConstraint = 22 # drop constraint
239
- AT_DropConstraintRecurse = 23 # internal to commands/tablecmds.c
240
- AT_ReAddComment = 24 # internal to commands/tablecmds.c
241
- AT_AlterColumnType = 25 # alter column type
242
- AT_AlterColumnGenericOptions = 26 # alter column OPTIONS (...)
243
- AT_ChangeOwner = 27 # change owner
244
- AT_ClusterOn = 28 # CLUSTER ON
245
- AT_DropCluster = 29 # SET WITHOUT CLUSTER
246
- AT_SetLogged = 30 # SET LOGGED
247
- AT_SetUnLogged = 31 # SET UNLOGGED
248
- AT_AddOids = 32 # SET WITH OIDS
249
- AT_AddOidsRecurse = 33 # internal to commands/tablecmds.c
250
- AT_DropOids = 34 # SET WITHOUT OIDS
251
- AT_SetTableSpace = 35 # SET TABLESPACE
252
- AT_SetRelOptions = 36 # SET (...) -- AM specific parameters
253
- AT_ResetRelOptions = 37 # RESET (...) -- AM specific parameters
254
- AT_ReplaceRelOptions = 38 # replace reloption list in its entirety
255
- AT_EnableTrig = 39 # ENABLE TRIGGER name
256
- AT_EnableAlwaysTrig = 40 # ENABLE ALWAYS TRIGGER name
257
- AT_EnableReplicaTrig = 41 # ENABLE REPLICA TRIGGER name
258
- AT_DisableTrig = 42 # DISABLE TRIGGER name
259
- AT_EnableTrigAll = 43 # ENABLE TRIGGER ALL
260
- AT_DisableTrigAll = 44 # DISABLE TRIGGER ALL
261
- AT_EnableTrigUser = 45 # ENABLE TRIGGER USER
262
- AT_DisableTrigUser = 46 # DISABLE TRIGGER USER
263
- AT_EnableRule = 47 # ENABLE RULE name
264
- AT_EnableAlwaysRule = 48 # ENABLE ALWAYS RULE name
265
- AT_EnableReplicaRule = 49 # ENABLE REPLICA RULE name
266
- AT_DisableRule = 50 # DISABLE RULE name
267
- AT_AddInherit = 51 # INHERIT parent
268
- AT_DropInherit = 52 # NO INHERIT parent
269
- AT_AddOf = 53 # OF <type_name>
270
- AT_DropOf = 54 # NOT OF
271
- AT_ReplicaIdentity = 55 # REPLICA IDENTITY
272
- AT_EnableRowSecurity = 56 # ENABLE ROW SECURITY
273
- AT_DisableRowSecurity = 57 # DISABLE ROW SECURITY
274
- AT_ForceRowSecurity = 58 # FORCE ROW SECURITY
275
- AT_NoForceRowSecurity = 59 # NO FORCE ROW SECURITY
276
- AT_GenericOptions = 60 # OPTIONS (...)
277
- AT_AttachPartition = 61 # ATTACH PARTITION
278
- AT_DetachPartition = 62 # DETACH PARTITION
279
- AT_AddIdentity = 63 # ADD IDENTITY
280
- AT_SetIdentity = 64 # SET identity column options
281
- AT_DropIdentity = 65 # DROP IDENTITY
282
- end