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.
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  class PgQuery
2
- VERSION = '1.1.0'.freeze
2
+ VERSION = '1.1.1'.freeze
3
3
  end
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.0
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: 2018-10-04 00:00:00.000000000 Z
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
- rubyforge_project:
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