pg_query 1.1.0 → 1.1.1
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 +4 -4
- data/CHANGELOG.md +35 -0
- data/ext/pg_query/extconf.rb +1 -1
- data/lib/pg_query/deparse.rb +393 -31
- data/lib/pg_query/deparse/keywords.rb +760 -0
- data/lib/pg_query/deparse/rename.rb +41 -0
- data/lib/pg_query/node_types.rb +9 -0
- data/lib/pg_query/version.rb +1 -1
- metadata +5 -4
@@ -0,0 +1,41 @@
|
|
1
|
+
class PgQuery
|
2
|
+
module Deparse
|
3
|
+
module Rename
|
4
|
+
# relation, subname and object is the array key in the node.
|
5
|
+
# Array return five value. First is the type like a TRIGGER, TABLE, DOMAIN
|
6
|
+
# Other values may be parameter or SQL key.
|
7
|
+
#
|
8
|
+
# If node['renameType'] is the integer 13 (OBJECT_TYPE_DOMCONSTRAINT),
|
9
|
+
# then return value of this method will be:
|
10
|
+
#
|
11
|
+
# %w[DOMAIN object RENAME CONSTRAINT subname]
|
12
|
+
#
|
13
|
+
# Which will be composed into the SQL as:
|
14
|
+
#
|
15
|
+
# ALTER {type} {name} RENAME CONSTRAINT {subname} TO {newname}
|
16
|
+
#
|
17
|
+
def self.commands(node)
|
18
|
+
action = RENAME_MAPPING[node['renameType']] || raise(format("Can't deparse: %s", node.inspect))
|
19
|
+
PgQuery::Deparse.instance_exec(node, &action)
|
20
|
+
end
|
21
|
+
|
22
|
+
RENAME_MAPPING = {
|
23
|
+
OBJECT_TYPE_CONVERSION => ->(_node) { %w[CONVERSION object RENAME] },
|
24
|
+
OBJECT_TYPE_TABLE => ->(_node) { %w[TABLE relation RENAME] },
|
25
|
+
OBJECT_TYPE_TABCONSTRAINT => ->(_node) { %w[TABLE relation RENAME CONSTRAINT subname] },
|
26
|
+
OBJECT_TYPE_INDEX => ->(_node) { %w[INDEX relation RENAME] },
|
27
|
+
OBJECT_TYPE_MATVIEW => ->(_node) { ['MATERIALIZED VIEW', 'relation', 'RENAME'] },
|
28
|
+
OBJECT_TYPE_TABLESPACE => ->(_node) { %w[TABLESPACE subname RENAME] },
|
29
|
+
OBJECT_TYPE_VIEW => ->(_node) { %w[VIEW relation RENAME] },
|
30
|
+
OBJECT_TYPE_COLUMN => ->(_node) { %w[TABLE relation RENAME COLUMN subname] },
|
31
|
+
OBJECT_TYPE_COLLATION => ->(_node) { %w[COLLATION object RENAME] },
|
32
|
+
OBJECT_TYPE_TYPE => ->(_node) { %w[TYPE object RENAME] },
|
33
|
+
OBJECT_TYPE_DOMCONSTRAINT => ->(_node) { %w[DOMAIN object RENAME CONSTRAINT subname] },
|
34
|
+
OBJECT_TYPE_RULE => ->(_node) { %w[RULE subname ON relation RENAME] },
|
35
|
+
OBJECT_TYPE_TRIGGER => ->(_node) { %w[TRIGGER subname ON relation RENAME] },
|
36
|
+
OBJECT_TYPE_AGGREGATE => ->(_node) { %w[AGGREGATE object RENAME] },
|
37
|
+
OBJECT_TYPE_FUNCTION => ->(_node) { %w[FUNCTION object RENAME] }
|
38
|
+
}.freeze
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/pg_query/node_types.rb
CHANGED
@@ -20,12 +20,18 @@ class PgQuery
|
|
20
20
|
CHECK_POINT_STMT = 'CheckPointStmt'.freeze
|
21
21
|
CLOSE_PORTAL_STMT = 'ClosePortalStmt'.freeze
|
22
22
|
COALESCE_EXPR = 'CoalesceExpr'.freeze
|
23
|
+
COLLATE_CLAUSE = 'CollateClause'.freeze
|
23
24
|
COLUMN_DEF = 'ColumnDef'.freeze
|
24
25
|
COLUMN_REF = 'ColumnRef'.freeze
|
25
26
|
COMMON_TABLE_EXPR = 'CommonTableExpr'.freeze
|
27
|
+
COMPOSITE_TYPE_STMT = 'CompositeTypeStmt'.freeze
|
26
28
|
CONSTRAINT = 'Constraint'.freeze
|
27
29
|
COPY_STMT = 'CopyStmt'.freeze
|
30
|
+
CREATE_CAST_STMT = 'CreateCastStmt'.freeze
|
31
|
+
CREATE_DOMAIN_STMT = 'CreateDomainStmt'.freeze
|
32
|
+
CREATE_ENUM_STMT = 'CreateEnumStmt'.freeze
|
28
33
|
CREATE_FUNCTION_STMT = 'CreateFunctionStmt'.freeze
|
34
|
+
CREATE_RANGE_STMT = 'CreateRangeStmt'.freeze
|
29
35
|
CREATE_SCHEMA_STMT = 'CreateSchemaStmt'.freeze
|
30
36
|
CREATE_STMT = 'CreateStmt'.freeze
|
31
37
|
CREATE_TABLE_AS_STMT = 'CreateTableAsStmt'.freeze
|
@@ -33,7 +39,9 @@ class PgQuery
|
|
33
39
|
DEALLOCATE_STMT = 'DeallocateStmt'.freeze
|
34
40
|
DECLARE_CURSOR_STMT = 'DeclareCursorStmt'.freeze
|
35
41
|
DEF_ELEM = 'DefElem'.freeze
|
42
|
+
DEFINE_STMT = 'DefineStmt'.freeze
|
36
43
|
DELETE_STMT = 'DeleteStmt'.freeze
|
44
|
+
DISCARD_STMT = 'DiscardStmt'.freeze
|
37
45
|
DO_STMT = 'DoStmt'.freeze
|
38
46
|
DROP_STMT = 'DropStmt'.freeze
|
39
47
|
EXECUTE_STMT = 'ExecuteStmt'.freeze
|
@@ -55,6 +63,7 @@ class PgQuery
|
|
55
63
|
LOCKING_CLAUSE = 'LockingClause'.freeze
|
56
64
|
NULL = 'Null'.freeze
|
57
65
|
NULL_TEST = 'NullTest'.freeze
|
66
|
+
OBJECT_WITH_ARGS = 'ObjectWithArgs'.freeze
|
58
67
|
OID_LIST = 'OidList'.freeze
|
59
68
|
PARAM_REF = 'ParamRef'.freeze
|
60
69
|
PREPARE_STMT = 'PrepareStmt'.freeze
|
data/lib/pg_query/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_query
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lukas Fittl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -88,6 +88,8 @@ files:
|
|
88
88
|
- lib/pg_query/deparse.rb
|
89
89
|
- lib/pg_query/deparse/alter_table.rb
|
90
90
|
- lib/pg_query/deparse/interval.rb
|
91
|
+
- lib/pg_query/deparse/keywords.rb
|
92
|
+
- lib/pg_query/deparse/rename.rb
|
91
93
|
- lib/pg_query/filter_columns.rb
|
92
94
|
- lib/pg_query/fingerprint.rb
|
93
95
|
- lib/pg_query/legacy_parsetree.rb
|
@@ -121,8 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
123
|
- !ruby/object:Gem::Version
|
122
124
|
version: '0'
|
123
125
|
requirements: []
|
124
|
-
|
125
|
-
rubygems_version: 2.7.6
|
126
|
+
rubygems_version: 3.0.6
|
126
127
|
signing_key:
|
127
128
|
specification_version: 4
|
128
129
|
summary: PostgreSQL query parsing and normalization library
|