pg_query 2.0.1 → 2.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 +220 -114
- data/README.md +12 -0
- data/Rakefile +6 -21
- data/ext/pg_query/extconf.rb +5 -2
- data/ext/pg_query/include/c.h +12 -0
- data/ext/pg_query/include/executor/executor.h +6 -0
- data/ext/pg_query/include/nodes/execnodes.h +9 -6
- data/ext/pg_query/include/nodes/pathnodes.h +1 -1
- data/ext/pg_query/include/optimizer/paths.h +8 -0
- data/ext/pg_query/include/pg_config.h +10 -6
- data/ext/pg_query/include/pg_config_manual.h +7 -0
- data/ext/pg_query/include/pg_query.h +2 -2
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1 -0
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +472 -467
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/include/utils/array.h +1 -0
- data/ext/pg_query/include/utils/lsyscache.h +1 -0
- data/ext/pg_query/include/utils/probes.h +57 -57
- data/ext/pg_query/pg_query.pb-c.c +502 -487
- data/ext/pg_query/pg_query_deparse.c +33 -21
- data/ext/pg_query/pg_query_fingerprint.c +123 -33
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_normalize.c +222 -61
- data/ext/pg_query/pg_query_parse_plpgsql.c +21 -1
- data/ext/pg_query/pg_query_ruby.sym +1 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +36 -0
- data/ext/pg_query/src_common_hashfn.c +420 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1 -1
- data/lib/pg_query/filter_columns.rb +3 -1
- data/lib/pg_query/fingerprint.rb +1 -3
- data/lib/pg_query/parse.rb +101 -46
- data/lib/pg_query/pg_query_pb.rb +1385 -1383
- data/lib/pg_query/truncate.rb +12 -4
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +8 -8
- data/lib/pg_query/json_field_names.rb +0 -1402
data/lib/pg_query/truncate.rb
CHANGED
@@ -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 |
|
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),
|
data/lib/pg_query/version.rb
CHANGED
data/lib/pg_query.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: 2.
|
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-
|
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.
|
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.
|
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:
|
564
|
+
homepage: https://github.com/pganalyze/pg_query
|
565
565
|
licenses:
|
566
566
|
- BSD-3-Clause
|
567
567
|
metadata: {}
|