pg_query 2.0.1 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +220 -114
  3. data/README.md +12 -0
  4. data/Rakefile +6 -21
  5. data/ext/pg_query/extconf.rb +5 -2
  6. data/ext/pg_query/include/c.h +12 -0
  7. data/ext/pg_query/include/executor/executor.h +6 -0
  8. data/ext/pg_query/include/nodes/execnodes.h +9 -6
  9. data/ext/pg_query/include/nodes/pathnodes.h +1 -1
  10. data/ext/pg_query/include/optimizer/paths.h +8 -0
  11. data/ext/pg_query/include/pg_config.h +10 -6
  12. data/ext/pg_query/include/pg_config_manual.h +7 -0
  13. data/ext/pg_query/include/pg_query.h +2 -2
  14. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1 -0
  15. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1 -0
  16. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +472 -467
  17. data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
  18. data/ext/pg_query/include/protobuf-c.h +7 -3
  19. data/ext/pg_query/include/utils/array.h +1 -0
  20. data/ext/pg_query/include/utils/lsyscache.h +1 -0
  21. data/ext/pg_query/include/utils/probes.h +57 -57
  22. data/ext/pg_query/pg_query.pb-c.c +502 -487
  23. data/ext/pg_query/pg_query_deparse.c +33 -21
  24. data/ext/pg_query/pg_query_fingerprint.c +123 -33
  25. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  26. data/ext/pg_query/pg_query_normalize.c +222 -61
  27. data/ext/pg_query/pg_query_parse_plpgsql.c +21 -1
  28. data/ext/pg_query/pg_query_ruby.sym +1 -0
  29. data/ext/pg_query/protobuf-c.c +34 -27
  30. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +36 -0
  31. data/ext/pg_query/src_common_hashfn.c +420 -0
  32. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1 -1
  33. data/lib/pg_query/filter_columns.rb +3 -1
  34. data/lib/pg_query/fingerprint.rb +1 -3
  35. data/lib/pg_query/parse.rb +101 -46
  36. data/lib/pg_query/pg_query_pb.rb +1385 -1383
  37. data/lib/pg_query/truncate.rb +12 -4
  38. data/lib/pg_query/version.rb +1 -1
  39. data/lib/pg_query.rb +0 -1
  40. metadata +8 -8
  41. data/lib/pg_query/json_field_names.rb +0 -1402
@@ -24,9 +24,10 @@ module PgQuery
24
24
  dummy_column_ref = PgQuery::Node.new(column_ref: PgQuery::ColumnRef.new(fields: [PgQuery::Node.new(string: PgQuery::String.new(str: '…'))]))
25
25
  case truncation.node_type
26
26
  when :target_list
27
+ res_target_name = '…' if node.is_a?(PgQuery::UpdateStmt) || node.is_a?(PgQuery::OnConflictClause)
27
28
  node.target_list.replace(
28
29
  [
29
- PgQuery::Node.new(res_target: PgQuery::ResTarget.new(val: dummy_column_ref))
30
+ PgQuery::Node.new(res_target: PgQuery::ResTarget.new(name: res_target_name, val: dummy_column_ref))
30
31
  ]
31
32
  )
32
33
  when :where_clause
@@ -34,7 +35,7 @@ module PgQuery
34
35
  when :ctequery
35
36
  node.ctequery = PgQuery::Node.new(select_stmt: PgQuery::SelectStmt.new(where_clause: dummy_column_ref, op: :SETOP_NONE))
36
37
  when :cols
37
- node.cols.replace([PgQuery::Node.from(PgQuery::ResTarget.new(name: '…'))])
38
+ node.cols.replace([PgQuery::Node.from(PgQuery::ResTarget.new(name: '…'))]) if node.is_a?(PgQuery::InsertStmt)
38
39
  else
39
40
  raise ArgumentError, format('Unexpected truncation node type: %s', truncation.node_type)
40
41
  end
@@ -50,21 +51,28 @@ module PgQuery
50
51
 
51
52
  private
52
53
 
53
- def find_possible_truncations
54
+ def find_possible_truncations # rubocop:disable Metrics/CyclomaticComplexity
54
55
  truncations = []
55
56
 
56
- treewalker! @tree do |_expr, k, v, location|
57
+ treewalker! @tree do |node, k, v, location|
57
58
  case k
58
59
  when :target_list
60
+ next unless node.is_a?(PgQuery::SelectStmt) || node.is_a?(PgQuery::UpdateStmt) || node.is_a?(PgQuery::OnConflictClause)
59
61
  length = PgQuery.deparse_stmt(PgQuery::SelectStmt.new(k => v.to_a, op: :SETOP_NONE)).size - 7 # 'SELECT '.size
60
62
  truncations << PossibleTruncation.new(location, :target_list, length, true)
61
63
  when :where_clause
64
+ next unless node.is_a?(PgQuery::SelectStmt) || node.is_a?(PgQuery::UpdateStmt) || node.is_a?(PgQuery::DeleteStmt) ||
65
+ node.is_a?(PgQuery::CopyStmt) || node.is_a?(PgQuery::IndexStmt) || node.is_a?(PgQuery::RuleStmt) ||
66
+ node.is_a?(PgQuery::InferClause) || node.is_a?(PgQuery::OnConflictClause)
67
+
62
68
  length = PgQuery.deparse_expr(v).size
63
69
  truncations << PossibleTruncation.new(location, :where_clause, length, false)
64
70
  when :ctequery
71
+ next unless node.is_a?(PgQuery::CommonTableExpr)
65
72
  length = PgQuery.deparse_stmt(v[v.node.to_s]).size
66
73
  truncations << PossibleTruncation.new(location, :ctequery, length, false)
67
74
  when :cols
75
+ next unless node.is_a?(PgQuery::InsertStmt)
68
76
  length = PgQuery.deparse_stmt(
69
77
  PgQuery::InsertStmt.new(
70
78
  relation: PgQuery::RangeVar.new(relname: 'x', inh: true),
@@ -1,3 +1,3 @@
1
1
  module PgQuery
2
- VERSION = '2.0.1'.freeze
2
+ VERSION = '2.1.1'.freeze
3
3
  end
data/lib/pg_query.rb CHANGED
@@ -10,7 +10,6 @@ require 'pg_query/parse'
10
10
  require 'pg_query/treewalker'
11
11
 
12
12
  require 'pg_query/filter_columns'
13
- require 'pg_query/json_field_names'
14
13
  require 'pg_query/fingerprint'
15
14
  require 'pg_query/param_refs'
16
15
  require 'pg_query/deparse'
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: 2.0.1
4
+ version: 2.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: 2021-03-18 00:00:00.000000000 Z
11
+ date: 2021-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: google-protobuf
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 3.15.5
75
+ version: 3.17.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 3.15.5
82
+ version: 3.17.1
83
83
  description: Parses SQL queries using a copy of the PostgreSQL server query parser
84
84
  email: lukas@fittl.com
85
85
  executables: []
@@ -522,6 +522,7 @@ files:
522
522
  - ext/pg_query/src_backend_utils_mmgr_aset.c
523
523
  - ext/pg_query/src_backend_utils_mmgr_mcxt.c
524
524
  - ext/pg_query/src_common_encnames.c
525
+ - ext/pg_query/src_common_hashfn.c
525
526
  - ext/pg_query/src_common_keywords.c
526
527
  - ext/pg_query/src_common_kwlist_d.h
527
528
  - ext/pg_query/src_common_kwlookup.c
@@ -551,7 +552,6 @@ files:
551
552
  - lib/pg_query/deparse.rb
552
553
  - lib/pg_query/filter_columns.rb
553
554
  - lib/pg_query/fingerprint.rb
554
- - lib/pg_query/json_field_names.rb
555
555
  - lib/pg_query/node.rb
556
556
  - lib/pg_query/param_refs.rb
557
557
  - lib/pg_query/parse.rb
@@ -561,7 +561,7 @@ files:
561
561
  - lib/pg_query/treewalker.rb
562
562
  - lib/pg_query/truncate.rb
563
563
  - lib/pg_query/version.rb
564
- homepage: http://github.com/pganalyze/pg_query
564
+ homepage: https://github.com/pganalyze/pg_query
565
565
  licenses:
566
566
  - BSD-3-Clause
567
567
  metadata: {}