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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +162 -40
- data/README.md +80 -69
- data/Rakefile +85 -4
- data/ext/pg_query/extconf.rb +4 -32
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/pg_query.c +104 -0
- data/ext/pg_query/pg_query.pb-c.c +37628 -0
- data/ext/pg_query/pg_query_deparse.c +9953 -0
- data/ext/pg_query/pg_query_fingerprint.c +292 -0
- data/ext/pg_query/pg_query_fingerprint.h +8 -0
- data/ext/pg_query/pg_query_internal.h +24 -0
- data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
- data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
- data/ext/pg_query/pg_query_normalize.c +437 -0
- data/ext/pg_query/pg_query_outfuncs.h +10 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
- data/ext/pg_query/pg_query_parse.c +148 -0
- data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
- data/ext/pg_query/pg_query_readfuncs.h +11 -0
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
- data/ext/pg_query/pg_query_ruby.c +108 -12
- data/ext/pg_query/pg_query_scan.c +173 -0
- data/ext/pg_query/pg_query_split.c +221 -0
- data/ext/pg_query/protobuf-c.c +3660 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
- data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
- data/ext/pg_query/src_backend_commands_define.c +117 -0
- data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
- data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
- data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
- data/ext/pg_query/src_backend_nodes_list.c +922 -0
- data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
- data/ext/pg_query/src_backend_nodes_value.c +84 -0
- data/ext/pg_query/src_backend_parser_gram.c +47456 -0
- data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
- data/ext/pg_query/src_backend_parser_parser.c +497 -0
- data/ext/pg_query/src_backend_parser_scan.c +7091 -0
- data/ext/pg_query/src_backend_parser_scansup.c +160 -0
- data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
- data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
- data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
- data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
- data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
- data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
- data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
- data/ext/pg_query/src_common_encnames.c +158 -0
- data/ext/pg_query/src_common_keywords.c +39 -0
- data/ext/pg_query/src_common_kwlist_d.h +1081 -0
- data/ext/pg_query/src_common_kwlookup.c +91 -0
- data/ext/pg_query/src_common_psprintf.c +158 -0
- data/ext/pg_query/src_common_string.c +86 -0
- data/ext/pg_query/src_common_stringinfo.c +336 -0
- data/ext/pg_query/src_common_wchar.c +1651 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
- data/ext/pg_query/src_port_erand48.c +127 -0
- data/ext/pg_query/src_port_pg_bitutils.c +246 -0
- data/ext/pg_query/src_port_pgsleep.c +69 -0
- data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
- data/ext/pg_query/src_port_qsort.c +240 -0
- data/ext/pg_query/src_port_random.c +31 -0
- data/ext/pg_query/src_port_snprintf.c +1449 -0
- data/ext/pg_query/src_port_strerror.c +324 -0
- data/ext/pg_query/src_port_strnlen.c +39 -0
- data/ext/pg_query/xxhash.c +43 -0
- data/lib/pg_query.rb +7 -4
- data/lib/pg_query/constants.rb +21 -0
- data/lib/pg_query/deparse.rb +16 -991
- data/lib/pg_query/filter_columns.rb +86 -85
- data/lib/pg_query/fingerprint.rb +122 -87
- data/lib/pg_query/json_field_names.rb +1402 -0
- data/lib/pg_query/node.rb +31 -0
- data/lib/pg_query/param_refs.rb +42 -37
- data/lib/pg_query/parse.rb +220 -200
- data/lib/pg_query/parse_error.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +3211 -0
- data/lib/pg_query/scan.rb +23 -0
- data/lib/pg_query/treewalker.rb +24 -40
- data/lib/pg_query/truncate.rb +64 -43
- data/lib/pg_query/version.rb +2 -2
- metadata +102 -11
- data/ext/pg_query/pg_query_ruby.h +0 -10
- data/lib/pg_query/deep_dup.rb +0 -16
- data/lib/pg_query/deparse/alter_table.rb +0 -42
- data/lib/pg_query/deparse/interval.rb +0 -105
- data/lib/pg_query/legacy_parsetree.rb +0 -109
- 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
|
data/lib/pg_query/node_types.rb
DELETED
|
@@ -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
|