pg_query 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|