pg_query 0.13.1 → 0.13.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3e1b71a544d0fb300ae470913f157d570579c70
4
- data.tar.gz: dd474651bb19f9a17d9c97c54bef4f772db57af9
3
+ metadata.gz: 7581a181058d0429e35143026aa4cde939af9920
4
+ data.tar.gz: 9dad6882888ad1a1631e6119263383613452df54
5
5
  SHA512:
6
- metadata.gz: 4212d4e1af776ee3a90441c93a8b4f8b4492fe093c95df887a35322c24cdfbb3a27b00e482c4a35ed5e6cbc85c7260f71d28503a2f220e7d60f3c653e0ec4b4a
7
- data.tar.gz: 89fe26ce09d610a61609fbfea3572834e30edd630486c1aa5257e72f39c31f885af1de814fa2caa7ca9c501cc9b2ddacd9c46becd4d2719523e4eef61b20afc4
6
+ metadata.gz: bf7a6b92484148b7431f83e4c9a7474825b3fd510d640210fb5fd7eb90bd761bb97dbd2ce4f8d0731bbb59c29158c5a147190eb098f31e17eb03691f3c322da7
7
+ data.tar.gz: e9418cbb97645d2b7ea861773b5e0ea6f5712183b28165985e5240f26e8335bff1a6c49d396c741c77380430069fb7edfbaeeff64575b49abdc333eba0451b4e
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.2 2017-08-10
4
+
5
+ * Support table detection in sub-SELECTs in JOINs [#68](https://github.com/lfittl/pg_query/pull/65) [@seanmdick](https://github.com/seanmdick)
6
+ * Legacy ".parsetree" helper: Fix "Between" and "In" operator does not have "AEXPR" [#66](https://github.com/lfittl/pg_query/issues/66)
7
+ * For new applications please use ".tree" method which uses the native structure
8
+ returned from libpg_query which resembles Postgres node names more closely
9
+
10
+
3
11
  ## 0.13.1 2017-08-03
4
12
 
5
13
  * Fix regression in 0.13.1 that broke ".tables" logic for COPY statements that
@@ -10,8 +10,7 @@ class PgQuery
10
10
  transform_parsetree_a_const(node)
11
11
  when A_EXPR
12
12
  transform_string_list(node[A_EXPR]['name'])
13
- new_key = LEGACY_A_EXPR_NAMES[node[A_EXPR]['kind']]
14
- node[A_EXPR].delete('kind')
13
+ node[key].delete('kind')
15
14
  when COLUMN_REF
16
15
  transform_string_list(node[COLUMN_REF]['fields'])
17
16
  when CREATE_FUNCTION_STMT
@@ -44,6 +43,7 @@ class PgQuery
44
43
  private
45
44
 
46
45
  LEGACY_NODE_NAMES = {
46
+ A_EXPR => 'AEXPR',
47
47
  SELECT_STMT => 'SELECT',
48
48
  ALTER_TABLE_CMD => 'ALTER TABLE CMD',
49
49
  ALTER_TABLE_STMT => 'ALTER TABLE',
@@ -65,24 +65,6 @@ class PgQuery
65
65
  # All others default to simply upper-casing the input name
66
66
  }.freeze
67
67
 
68
- LEGACY_A_EXPR_NAMES = {
69
- AEXPR_OP => 'AEXPR',
70
- # AEXPR_OP_ANY = 1 # normal operator
71
- # AEXPR_OP_ALL = 2 # scalar op ALL (array)
72
- # AEXPR_DISTINCT = 3 # IS DISTINCT FROM - name must be "="
73
- # AEXPR_NULLIF = 4 # NULLIF - name must be "="
74
- # AEXPR_OF = 5 # IS [NOT] OF - name must be "=" or "<>"
75
- # AEXPR_IN = 6 # [NOT] IN - name must be "=" or "<>"
76
- # AEXPR_LIKE = 7 # [NOT] LIKE - name must be "~~" or "!~~"
77
- # AEXPR_ILIKE = 8 # [NOT] ILIKE - name must be "~~*" or "!~~*"
78
- AEXPR_SIMILAR => 'AEXPR',
79
- # AEXPR_BETWEEN = 10 # name must be "BETWEEN"
80
- # AEXPR_NOT_BETWEEN = 11 # name must be "NOT BETWEEN"
81
- # AEXPR_BETWEEN_SYM = 12 # name must be "BETWEEN SYMMETRIC"
82
- # AEXPR_NOT_BETWEEN_SYM = 13 # name must be "NOT BETWEEN SYMMETRIC"
83
- # AEXPR_PAREN = 14 # nameless dummy node for parentheses
84
- }.freeze
85
-
86
68
  LEGACY_CONSTRAINT_TYPES = {
87
69
  # CONSTR_TYPE_NULL = 0 # not standard SQL, but a lot of people expect it
88
70
  # CONSTR_TYPE_NOTNULL = 1
@@ -201,6 +201,10 @@ class PgQuery
201
201
  table = [rangevar['schemaname'], rangevar['relname']].compact.join('.')
202
202
  @tables << { table: table, type: next_item[:type] }
203
203
  @aliases[rangevar['alias'][ALIAS]['aliasname']] = table if rangevar['alias']
204
+ when RANGE_SUBSELECT
205
+ from_clause_items << { item: next_item[:item][RANGE_SUBSELECT]['subquery'], type: next_item[:type] }
206
+ when SELECT_STMT
207
+ from_clause_items += next_item[:item][SELECT_STMT]['fromClause'].map { |r| { item: r, type: next_item[:type] } }
204
208
  end
205
209
  end
206
210
 
@@ -1,3 +1,3 @@
1
1
  class PgQuery
2
- VERSION = '0.13.1'.freeze
2
+ VERSION = '0.13.2'.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: 0.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Fittl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-03 00:00:00.000000000 Z
11
+ date: 2017-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  version: '0'
143
143
  requirements: []
144
144
  rubyforge_project:
145
- rubygems_version: 2.5.1
145
+ rubygems_version: 2.6.11
146
146
  signing_key:
147
147
  specification_version: 4
148
148
  summary: PostgreSQL query parsing and normalization library