oracle-sql-parser 0.9.2 → 1.1.0

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.
Files changed (57) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +213 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +66 -3
  5. data/Rakefile +62 -10
  6. data/lib/oracle-sql-parser/ast/fetch.rb +12 -0
  7. data/lib/oracle-sql-parser/ast/number_literal.rb +1 -1
  8. data/lib/oracle-sql-parser/ast/offset.rb +11 -0
  9. data/lib/oracle-sql-parser/ast/row_limiting_clause.rb +10 -0
  10. data/lib/oracle-sql-parser/ast/subquery.rb +8 -4
  11. data/lib/oracle-sql-parser/ast.rb +3 -0
  12. data/lib/oracle-sql-parser/grammar/condition/between.rb +5 -3
  13. data/lib/oracle-sql-parser/grammar/condition/comparison.rb +5 -3
  14. data/lib/oracle-sql-parser/grammar/condition/comparison.treetop +1 -0
  15. data/lib/oracle-sql-parser/grammar/condition/compound.rb +5 -3
  16. data/lib/oracle-sql-parser/grammar/condition/exists.rb +5 -3
  17. data/lib/oracle-sql-parser/grammar/condition/floating_point.rb +5 -3
  18. data/lib/oracle-sql-parser/grammar/condition/in.rb +5 -3
  19. data/lib/oracle-sql-parser/grammar/condition/is_of_type.rb +5 -3
  20. data/lib/oracle-sql-parser/grammar/condition/multiset.rb +5 -3
  21. data/lib/oracle-sql-parser/grammar/condition/null.rb +5 -3
  22. data/lib/oracle-sql-parser/grammar/condition/pattern_matching.rb +5 -3
  23. data/lib/oracle-sql-parser/grammar/condition.rb +5 -3
  24. data/lib/oracle-sql-parser/grammar/delete.rb +5 -3
  25. data/lib/oracle-sql-parser/grammar/expression/case.rb +5 -3
  26. data/lib/oracle-sql-parser/grammar/expression/compound.rb +5 -3
  27. data/lib/oracle-sql-parser/grammar/expression/cursor.rb +5 -3
  28. data/lib/oracle-sql-parser/grammar/expression/datetime.rb +5 -3
  29. data/lib/oracle-sql-parser/grammar/expression/function.rb +5 -3
  30. data/lib/oracle-sql-parser/grammar/expression/interval.rb +5 -3
  31. data/lib/oracle-sql-parser/grammar/expression/simple.rb +5 -3
  32. data/lib/oracle-sql-parser/grammar/expression.rb +5 -27
  33. data/lib/oracle-sql-parser/grammar/expression.treetop +0 -4
  34. data/lib/oracle-sql-parser/grammar/grammar.rb +5 -29
  35. data/lib/oracle-sql-parser/grammar/grammar.treetop +0 -8
  36. data/lib/oracle-sql-parser/grammar/insert.rb +5 -3
  37. data/lib/oracle-sql-parser/grammar/reserved_word.rb +662 -42
  38. data/lib/oracle-sql-parser/grammar/reserved_word.treetop +1150 -0
  39. data/lib/oracle-sql-parser/grammar/reserved_word_generator.rb +7 -1
  40. data/lib/oracle-sql-parser/grammar/select/for_update.rb +5 -3
  41. data/lib/oracle-sql-parser/grammar/select/group.rb +5 -3
  42. data/lib/oracle-sql-parser/grammar/select/join.rb +5 -3
  43. data/lib/oracle-sql-parser/grammar/select/order.rb +5 -3
  44. data/lib/oracle-sql-parser/grammar/select/query_block.rb +5 -3
  45. data/lib/oracle-sql-parser/grammar/select/row_limit.rb +407 -0
  46. data/lib/oracle-sql-parser/grammar/select/row_limit.treetop +49 -0
  47. data/lib/oracle-sql-parser/grammar/select/union.rb +5 -3
  48. data/lib/oracle-sql-parser/grammar/select.rb +46 -5
  49. data/lib/oracle-sql-parser/grammar/select.treetop +4 -1
  50. data/lib/oracle-sql-parser/grammar/update.rb +5 -3
  51. data/lib/oracle-sql-parser/grammar.rb +1 -0
  52. data/lib/oracle-sql-parser/version.rb +1 -1
  53. data/oracle-sql-parser.gemspec +14 -12
  54. metadata +40 -53
  55. data/.gitignore +0 -24
  56. data/Gemfile +0 -4
  57. data/HISTORY.md +0 -70
@@ -6,6 +6,7 @@ module OracleSqlParser::Grammar
6
6
  include OracleSqlParser::Grammar::Select::ForUpdate
7
7
  include OracleSqlParser::Grammar::Select::Union
8
8
  include OracleSqlParser::Grammar::Select::QueryBlock
9
+ include OracleSqlParser::Grammar::Select::RowLimit
9
10
 
10
11
  rule select_statement
11
12
  space? subquery for_update:(space for_update_clause)? space? {
@@ -24,7 +25,8 @@ module OracleSqlParser::Grammar
24
25
  query_block !(space union_or_intersect_or_minus) /
25
26
  subqueries:subqueries_with_union
26
27
  )
27
- order:(space order_by_clause)? {
28
+ order:(space order_by_clause)?
29
+ row_limit:(space row_limiting_clause:row_limiting_clause)? {
28
30
  def ast
29
31
  OracleSqlParser::Ast::Subquery[
30
32
  :has_parenthesis => query.try(:left_parenthesis) ? true : nil,
@@ -32,6 +34,7 @@ module OracleSqlParser::Grammar
32
34
  :subqueries => query.try(:subqueries).ast,
33
35
  :subquery => query.try(:subquery).ast,
34
36
  :order_by_clause => order.try(:order_by_clause).ast,
37
+ :row_limiting_clause => row_limit.try(:row_limiting_clause).ast,
35
38
  ]
36
39
  end
37
40
  }
@@ -774,10 +774,12 @@ module OracleSqlParser::Grammar
774
774
  r0
775
775
  end
776
776
 
777
- end
778
777
 
779
- class UpdateParser < Treetop::Runtime::CompiledParser
780
- include Update
778
+ class Parser < Treetop::Runtime::CompiledParser
779
+ include Update
780
+ end
781
781
  end
782
782
 
783
+ (remove_const(:UpdateParser) if const_defined?(:UpdateParser)) rescue nil; UpdateParser = Update::Parser
784
+
783
785
  end
@@ -27,6 +27,7 @@ require "oracle-sql-parser/grammar/select/join.rb"
27
27
  require "oracle-sql-parser/grammar/select/for_update.rb"
28
28
  require "oracle-sql-parser/grammar/select/union.rb"
29
29
  require "oracle-sql-parser/grammar/select/query_block.rb"
30
+ require "oracle-sql-parser/grammar/select/row_limit.rb"
30
31
  require "oracle-sql-parser/grammar/select.rb"
31
32
  require "oracle-sql-parser/grammar/update.rb"
32
33
  require "oracle-sql-parser/grammar/delete.rb"
@@ -1,3 +1,3 @@
1
1
  module OracleSqlParser
2
- VERSION = "0.9.2"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -14,19 +14,21 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://github.com/jksy/sql_parser"
15
15
  spec.licenses = ["MIT"]
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test)/|.travis}) }
18
- spec.files += `echo lib/oracle-sql-parser/grammar/**/*.rb`.split(" ")
19
- spec.files += `echo lib/oracle-sql-parser/grammar/*.rb`.split(" ")
17
+ # Everything tracked by git except tests and repository tooling.
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test|\.github|\.claude|\.devcontainer|gemfiles)/}) ||
20
+ f.match(/^(AGENTS\.md|CLAUDE\.md|Appraisals|codecov\.yml|Gemfile|\.gitignore|\.rubocop.*\.yml|\.ruby-version)$/)
21
+ end
20
22
  spec.require_paths = ["lib"]
21
23
 
22
- spec.required_ruby_version = '>= 1.9.3'
24
+ spec.required_ruby_version = '>= 3.2.0'
23
25
  spec.add_runtime_dependency "treetop", "~> 1.6"
24
- spec.add_development_dependency "bundler", "~> 1.10"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "test-unit", "~> 3.1"
27
- spec.add_development_dependency "activerecord", "~> 4.2"
28
- spec.add_development_dependency "activerecord-oracle_enhanced-adapter", "~> 1.6.0"
29
- spec.add_development_dependency "ruby-oci8", "~> 2.0"
30
- spec.add_development_dependency "pry-byebug", "3.4.0" if RUBY_VERSION >= '2.0.0'
31
- spec.add_development_dependency "colorize", "~> 0.8"
26
+ # bigdecimal is a bundled gem since Ruby 3.4 and must be declared explicitly
27
+ spec.add_runtime_dependency "bigdecimal"
28
+ spec.add_development_dependency "rake", "~> 13.0"
29
+ spec.add_development_dependency "test-unit", "~> 3.5"
30
+ spec.add_development_dependency "pry-byebug"
31
+ spec.add_development_dependency "colorize"
32
+ spec.add_development_dependency "appraisal"
33
+ spec.add_development_dependency "rubocop", "~> 1.91"
32
34
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oracle-sql-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junichiro Kasuya
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2017-12-29 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: treetop
@@ -25,117 +24,103 @@ dependencies:
25
24
  - !ruby/object:Gem::Version
26
25
  version: '1.6'
27
26
  - !ruby/object:Gem::Dependency
28
- name: bundler
27
+ name: bigdecimal
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '1.10'
34
- type: :development
32
+ version: '0'
33
+ type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '1.10'
39
+ version: '0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: rake
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '10.0'
46
+ version: '13.0'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '10.0'
53
+ version: '13.0'
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: test-unit
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '3.1'
60
+ version: '3.5'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '3.1'
67
+ version: '3.5'
69
68
  - !ruby/object:Gem::Dependency
70
- name: activerecord
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '4.2'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '4.2'
83
- - !ruby/object:Gem::Dependency
84
- name: activerecord-oracle_enhanced-adapter
69
+ name: pry-byebug
85
70
  requirement: !ruby/object:Gem::Requirement
86
71
  requirements:
87
- - - "~>"
72
+ - - ">="
88
73
  - !ruby/object:Gem::Version
89
- version: 1.6.0
74
+ version: '0'
90
75
  type: :development
91
76
  prerelease: false
92
77
  version_requirements: !ruby/object:Gem::Requirement
93
78
  requirements:
94
- - - "~>"
79
+ - - ">="
95
80
  - !ruby/object:Gem::Version
96
- version: 1.6.0
81
+ version: '0'
97
82
  - !ruby/object:Gem::Dependency
98
- name: ruby-oci8
83
+ name: colorize
99
84
  requirement: !ruby/object:Gem::Requirement
100
85
  requirements:
101
- - - "~>"
86
+ - - ">="
102
87
  - !ruby/object:Gem::Version
103
- version: '2.0'
88
+ version: '0'
104
89
  type: :development
105
90
  prerelease: false
106
91
  version_requirements: !ruby/object:Gem::Requirement
107
92
  requirements:
108
- - - "~>"
93
+ - - ">="
109
94
  - !ruby/object:Gem::Version
110
- version: '2.0'
95
+ version: '0'
111
96
  - !ruby/object:Gem::Dependency
112
- name: pry-byebug
97
+ name: appraisal
113
98
  requirement: !ruby/object:Gem::Requirement
114
99
  requirements:
115
- - - '='
100
+ - - ">="
116
101
  - !ruby/object:Gem::Version
117
- version: 3.4.0
102
+ version: '0'
118
103
  type: :development
119
104
  prerelease: false
120
105
  version_requirements: !ruby/object:Gem::Requirement
121
106
  requirements:
122
- - - '='
107
+ - - ">="
123
108
  - !ruby/object:Gem::Version
124
- version: 3.4.0
109
+ version: '0'
125
110
  - !ruby/object:Gem::Dependency
126
- name: colorize
111
+ name: rubocop
127
112
  requirement: !ruby/object:Gem::Requirement
128
113
  requirements:
129
114
  - - "~>"
130
115
  - !ruby/object:Gem::Version
131
- version: '0.8'
116
+ version: '1.91'
132
117
  type: :development
133
118
  prerelease: false
134
119
  version_requirements: !ruby/object:Gem::Requirement
135
120
  requirements:
136
121
  - - "~>"
137
122
  - !ruby/object:Gem::Version
138
- version: '0.8'
123
+ version: '1.91'
139
124
  description: SQL Parser for Oracle
140
125
  email:
141
126
  - junichiro.kasuya@gmail.com
@@ -143,9 +128,8 @@ executables: []
143
128
  extensions: []
144
129
  extra_rdoc_files: []
145
130
  files:
146
- - ".gitignore"
147
- - Gemfile
148
- - HISTORY.md
131
+ - CHANGELOG.md
132
+ - LICENSE.txt
149
133
  - README.md
150
134
  - Rakefile
151
135
  - lib/oracle-sql-parser.rb
@@ -162,6 +146,7 @@ files:
162
146
  - lib/oracle-sql-parser/ast/delete_statement.rb
163
147
  - lib/oracle-sql-parser/ast/delete_target.rb
164
148
  - lib/oracle-sql-parser/ast/exists_condition.rb
149
+ - lib/oracle-sql-parser/ast/fetch.rb
165
150
  - lib/oracle-sql-parser/ast/floating_point_condition.rb
166
151
  - lib/oracle-sql-parser/ast/for_update_clause.rb
167
152
  - lib/oracle-sql-parser/ast/function_expression.rb
@@ -183,6 +168,7 @@ files:
183
168
  - lib/oracle-sql-parser/ast/member_condition.rb
184
169
  - lib/oracle-sql-parser/ast/null_condition.rb
185
170
  - lib/oracle-sql-parser/ast/number_literal.rb
171
+ - lib/oracle-sql-parser/ast/offset.rb
186
172
  - lib/oracle-sql-parser/ast/on_clause.rb
187
173
  - lib/oracle-sql-parser/ast/only_and_type.rb
188
174
  - lib/oracle-sql-parser/ast/order_by_clause.rb
@@ -191,6 +177,7 @@ files:
191
177
  - lib/oracle-sql-parser/ast/query_block.rb
192
178
  - lib/oracle-sql-parser/ast/regexp_condition.rb
193
179
  - lib/oracle-sql-parser/ast/rollup_cube_clause.rb
180
+ - lib/oracle-sql-parser/ast/row_limiting_clause.rb
194
181
  - lib/oracle-sql-parser/ast/searched_case_expression.rb
195
182
  - lib/oracle-sql-parser/ast/select_column.rb
196
183
  - lib/oracle-sql-parser/ast/select_statement.rb
@@ -253,6 +240,7 @@ files:
253
240
  - lib/oracle-sql-parser/grammar/insert.rb
254
241
  - lib/oracle-sql-parser/grammar/insert.treetop
255
242
  - lib/oracle-sql-parser/grammar/reserved_word.rb
243
+ - lib/oracle-sql-parser/grammar/reserved_word.treetop
256
244
  - lib/oracle-sql-parser/grammar/reserved_word_generator.rb
257
245
  - lib/oracle-sql-parser/grammar/select.rb
258
246
  - lib/oracle-sql-parser/grammar/select.treetop
@@ -266,6 +254,8 @@ files:
266
254
  - lib/oracle-sql-parser/grammar/select/order.treetop
267
255
  - lib/oracle-sql-parser/grammar/select/query_block.rb
268
256
  - lib/oracle-sql-parser/grammar/select/query_block.treetop
257
+ - lib/oracle-sql-parser/grammar/select/row_limit.rb
258
+ - lib/oracle-sql-parser/grammar/select/row_limit.treetop
269
259
  - lib/oracle-sql-parser/grammar/select/union.rb
270
260
  - lib/oracle-sql-parser/grammar/select/union.treetop
271
261
  - lib/oracle-sql-parser/grammar/update.rb
@@ -280,7 +270,6 @@ homepage: https://github.com/jksy/sql_parser
280
270
  licenses:
281
271
  - MIT
282
272
  metadata: {}
283
- post_install_message:
284
273
  rdoc_options: []
285
274
  require_paths:
286
275
  - lib
@@ -288,16 +277,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
288
277
  requirements:
289
278
  - - ">="
290
279
  - !ruby/object:Gem::Version
291
- version: 1.9.3
280
+ version: 3.2.0
292
281
  required_rubygems_version: !ruby/object:Gem::Requirement
293
282
  requirements:
294
283
  - - ">="
295
284
  - !ruby/object:Gem::Version
296
285
  version: '0'
297
286
  requirements: []
298
- rubyforge_project:
299
- rubygems_version: 2.6.12
300
- signing_key:
287
+ rubygems_version: 3.6.9
301
288
  specification_version: 4
302
289
  summary: SQL Parser for Oracle
303
290
  test_files: []
data/.gitignore DELETED
@@ -1,24 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- lib/oracle-sql-parser/grammar/condition.rb
11
- lib/oracle-sql-parser/grammar/condition/*.rb
12
- lib/oracle-sql-parser/grammar/delete.rb
13
- lib/oracle-sql-parser/grammar/expression.rb
14
- lib/oracle-sql-parser/grammar/expression/*.rb
15
- lib/oracle-sql-parser/grammar/grammar.rb
16
- lib/oracle-sql-parser/grammar/insert.rb
17
- lib/oracle-sql-parser/grammar/reserved_word.rb
18
- lib/oracle-sql-parser/grammar/reserved_word.treetop
19
- lib/oracle-sql-parser/grammar/select.rb
20
- lib/oracle-sql-parser/grammar/select/*.rb
21
- lib/oracle-sql-parser/grammar/update.rb
22
- test/oracle_enhanced-adapter/connection_params.yml
23
- *.sw?
24
- *.gem
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in sql_parser.gemspec
4
- gemspec
data/HISTORY.md DELETED
@@ -1,70 +0,0 @@
1
- ### 0.9.0
2
- * Syntax
3
- * added cursor expression
4
- * added datetime expression
5
- * added interval expression
6
-
7
- ### 0.8.1
8
- * Fix README.md
9
-
10
- ### 0.8.0
11
- * Syntax
12
- * subquery https://github.com/jksy/sql_parser/issues/8
13
- * "select col1 from table1 union select col2 from table2 union select col3 from table3"
14
- * "select col1 from table1 union (select col2 from table2)"
15
- * compound expression https://github.com/jksy/sql_parser/issues/8
16
- * "select 1-1 from table1"
17
- * Broken changes
18
- * select_list.
19
- Ast::Array[ Ast::Ident[..], Ast::Ident[..]] Ast::Array[ Ast::SelectColumn[:expr => Ast::Ident[..]],...]
20
-
21
- ### 0.7.0
22
- * Syntax
23
- * table alias, like "select a.* from table1 a". https://github.com/jksy/sql_parser/issues/8
24
-
25
- ### 0.6.0
26
- * Enchancement
27
- * added travis-ci
28
- * added oracle enhanced adapter query(select, includes, joins, where)
29
- * Syntax
30
- * added syntax for column_alias
31
-
32
- ### 0.5.1
33
- * Bug fix
34
- * fix spell. to_pameternized is deprecated and will be removed. use to_parameterized
35
-
36
- ### 0.5.0
37
- * Enchancement
38
- * added NumberLiteral#to_cecimal, TextLiteral#to_s
39
-
40
- ### 0.4.0
41
- * Bugfix
42
- * rename ParameternizedQuery#query -> ParameternizedQuery#to_sql
43
- * Syntax
44
- * union [all]
45
- * intersect
46
- * minus
47
- * [inner|outer] join
48
- * conditions
49
- * floating point condition
50
- * multiset condition
51
- * is_of_type condition
52
-
53
- ### 0.3.0
54
- * Enchancement
55
- * added to_parameternized method
56
-
57
- * Bug fix
58
- * to_sql when select multiple column query parsed
59
-
60
- ### 0.2.0
61
- * Bug fix
62
- * Identifier[:value => ..] -> Identifier[:name => ..] when use sequence.nextval
63
- * refactor test cases
64
-
65
- ### 0.1.1
66
- * Syntax
67
- * support double-quoted identifer
68
-
69
- ### 0.1.0
70
- * Initial version