gda 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 90fd4381e4ad8e36706b5668d06a7aefd38bddb3
4
- data.tar.gz: d4decc43386524ae4bb1b5f013b9c8e61284cf7d
2
+ SHA256:
3
+ metadata.gz: 57c06ead700d0c7f320a74263ce3e5ecfe28015a5489d65d9f3c5faf96647709
4
+ data.tar.gz: dad5b08bd24a8c61f2294b045a7b5a5c822a048ed94d1c82ebf8b63413c54b6d
5
5
  SHA512:
6
- metadata.gz: 1a1cff3f1c41b0797b0acfc4432e8bdee15f37dd3a82737f44f30a5b39480450065c8f3d6e52e54dcf8c443023683b1c76910d0ab64cd5d6b6ffb2ff337eb3f6
7
- data.tar.gz: a46766066ba0905568447e5d2b0068299cd4693dccc578683b17593cbd5feba30af797c44459786a7fdf6e21d9415a61851aaa6b6700b6ce21d964fb5f80c854
6
+ metadata.gz: 1d734598fe06db00664019f84b15680499a48e4b54ee7512970009c84cfac4831bba103edf87539f2ae5e20bbbd433a9eeb730d16e0767651fdfa8e6f030612e
7
+ data.tar.gz: 05f7689feb91287713fad9729d0af8b255ffa12c781892d1f3be5e84524b2853cd8492281d2dfeff8700ed14f78f87e02d60eba5075760439d6eca4bb6c775eb
data/README.rdoc CHANGED
@@ -7,11 +7,6 @@
7
7
  An SQL parser. Wraps libgda in a loving embrace to give you a ruby level SQL
8
8
  parser.
9
9
 
10
- == FEATURES/PROBLEMS:
11
-
12
- * Not done yet
13
- * Do not use
14
-
15
10
  == SYNOPSIS:
16
11
 
17
12
  parser = GDA::SQL::Parser.new
@@ -39,7 +34,7 @@ parser.
39
34
 
40
35
  (The MIT License)
41
36
 
42
- Copyright (c) 2012-2013 Aaron Patterson
37
+ Copyright (c) 2012-2016 Aaron Patterson
43
38
 
44
39
  Permission is hereby granted, free of charge, to any person obtaining
45
40
  a copy of this software and associated documentation files (the
data/ext/gda/extconf.rb CHANGED
@@ -2,12 +2,16 @@ require 'mkmf'
2
2
 
3
3
  # :stopdoc:
4
4
 
5
- ENV['PKG_CONFIG_PATH']= '/usr/local/Library/ENV/pkgconfig/mountain_lion'
5
+ ENV['PKG_CONFIG_PATH'] ||= '/usr/local/lib/pkgconfig'
6
6
 
7
7
  dir_config 'libgda'
8
8
 
9
9
  def asplode missing
10
- abort "#{missing} is missing. Try 'brew install libgda'"
10
+ abort <<-MSG
11
+ #{missing} is missing. Try 'brew install libgda' if you are on OSX and have homebrew installed.
12
+ You can also check https://github.com/GNOME/libgda for more info on how to install
13
+ the dependency.
14
+ MSG
11
15
  end
12
16
 
13
17
  pkg_config 'libgda-5.0'
data/ext/gda/gda.c CHANGED
@@ -16,7 +16,7 @@ static VALUE parse(VALUE self, VALUE sql)
16
16
  {
17
17
  GdaSqlParser * parser;
18
18
  GdaStatement * stmt;
19
- GError * error;
19
+ GError * error = NULL;
20
20
  const gchar * rest;
21
21
 
22
22
  Data_Get_Struct(self, GdaSqlParser, parser);
data/ext/gda/gda_nodes.c CHANGED
@@ -23,6 +23,7 @@ VALUE cSavepoint;
23
23
  VALUE cBegin;
24
24
  VALUE cRollback;
25
25
  VALUE cCommit;
26
+ VALUE cCompound;
26
27
 
27
28
  #define WrapInteger(klass, type, lname) \
28
29
  static VALUE rb_##klass##_##lname(VALUE self) \
@@ -146,6 +147,8 @@ WrapNode(cJoin, GdaSqlSelectJoin, expr);
146
147
  WrapList(cJoin, GdaSqlSelectJoin, use);
147
148
  WrapInteger(cJoin, GdaSqlSelectJoin, position);
148
149
 
150
+ WrapInteger(cCompound, GdaSqlStatementCompound, compound_type);
151
+
149
152
  WrapList(cUnknown, GdaSqlStatementUnknown, expressions);
150
153
 
151
154
  static VALUE distinct_p(VALUE self)
@@ -236,12 +239,36 @@ VALUE WrapAnyPart(VALUE stmt, GdaSqlAnyPart *part)
236
239
  case GDA_SQL_ANY_SQL_SELECT_JOIN:
237
240
  return Wrap(stmt, cJoin, part);
238
241
  break;
242
+ case GDA_SQL_ANY_STMT_COMPOUND:
243
+ return Wrap(stmt, cCompound, part);
244
+ break;
239
245
  default:
240
246
  rb_raise(rb_eRuntimeError, "unknown node type: %d\n", part->type);
241
247
  return Qnil;
242
248
  }
243
249
  }
244
250
 
251
+
252
+ static VALUE rb_cCompound_stmt_list(VALUE self)
253
+ {
254
+ GdaSqlStatementCompound * st;
255
+ GSList * list;
256
+ VALUE array;
257
+ VALUE stmt;
258
+
259
+ Data_Get_Struct(self, GdaSqlStatementCompound, st);
260
+ stmt = rb_iv_get(self, "stmt");
261
+ array = rb_ary_new();
262
+
263
+ for (list = st->stmt_list; list; list = list->next) {
264
+ GdaSqlStatement *sqlst = (GdaSqlStatement*) list->data;
265
+ VALUE obj = Wrap(stmt, cSelect, GDA_SQL_ANY_PART(sqlst->contents));
266
+ rb_ary_push(array, obj);
267
+ }
268
+ return array;
269
+ }
270
+
271
+
245
272
  static VALUE rb_cInsert_values_list(VALUE self)
246
273
  {
247
274
  GdaSqlStatementInsert * st;
@@ -392,6 +419,7 @@ void Init_gda_nodes()
392
419
  mNodes = rb_define_module_under(mGDA, "Nodes");
393
420
 
394
421
  cNode = rb_define_class_under(mNodes, "Node", rb_cObject);
422
+ rb_undef_alloc_func(cNode);
395
423
 
396
424
  cSelect = rb_define_class_under(mNodes, "Select", cNode);
397
425
  rb_define_method(cSelect, "distinct?", distinct_p, 0);
@@ -477,6 +505,10 @@ void Init_gda_nodes()
477
505
  cField = rb_define_class_under(mNodes, "Field", cNode);
478
506
  WrapperMethod(cField, field_name);
479
507
 
508
+ cCompound = rb_define_class_under(mNodes, "Compound", cNode);
509
+ WrapperMethod(cCompound, compound_type);
510
+ WrapperMethod(cCompound, stmt_list);
511
+
480
512
  cBegin = rb_define_class_under(mNodes, "Begin", cNode);
481
513
  cRollback = rb_define_class_under(mNodes, "Rollback", cNode);
482
514
  cCommit = rb_define_class_under(mNodes, "Commit", cNode);
@@ -52,6 +52,7 @@ static VALUE quote_str(VALUE self, VALUE str)
52
52
  void Init_gda_provider()
53
53
  {
54
54
  cProvider = rb_define_class_under(mSQL, "Provider", rb_cObject);
55
+ rb_undef_alloc_func(cProvider);
55
56
  rb_define_singleton_method(cProvider, "find", find, 1);
56
57
  rb_define_method(cProvider, "name", name, 0);
57
58
  rb_define_method(cProvider, "parser", parser, 0);
@@ -49,6 +49,9 @@ void Init_gda_statement()
49
49
  cStatement = rb_define_class_under(mSQL, "Statement", rb_cObject);
50
50
  cStructure = rb_define_class_under(mSQL, "Structure", rb_cObject);
51
51
 
52
+ rb_undef_alloc_func(cStatement);
53
+ rb_undef_alloc_func(cStructure);
54
+
52
55
  rb_define_method(cStatement, "serialize", serialize, 0);
53
56
  rb_define_method(cStatement, "structure", structure, 0);
54
57
  rb_define_method(cStructure, "ast", ast, 0);
@@ -94,6 +94,10 @@ module GDA
94
94
  visit node.expressions
95
95
  end
96
96
 
97
+ def visit_GDA_Nodes_Compound node
98
+ visit node.stmt_list
99
+ end
100
+
97
101
  ## Terminal nodes
98
102
  def visit_GDA_Nodes_Table node
99
103
  end
data/lib/gda.rb CHANGED
@@ -4,7 +4,7 @@ require 'gda/visitors/dot'
4
4
  require 'gda/visitors/max_depth'
5
5
 
6
6
  module GDA
7
- VERSION = '1.0.0'
7
+ VERSION = '1.1.1'
8
8
 
9
9
  module SQL
10
10
  class Statement
data/test/helper.rb CHANGED
@@ -3,7 +3,7 @@ require 'gda'
3
3
  require 'sqlite3'
4
4
 
5
5
  module GDA
6
- class TestCase < MiniTest::Unit::TestCase
6
+ class TestCase < Minitest::Test
7
7
  @@rails_sql = nil
8
8
 
9
9
  def self.rails_sql
data/test/test_gda.rb CHANGED
@@ -34,17 +34,20 @@ module GDA
34
34
 
35
35
  def test_pg_parser
36
36
  provider = SQL::Provider.find "PostgreSQL"
37
+ skip "don't have PG provider" unless provider
37
38
  assert provider.parser.parse 'INSERT INTO "accounts" ("credit_limit", "firm_id", "firm_name") VALUES ($1, $2, $3) RETURNING "id"'
38
39
  end
39
40
 
40
41
  def test_mysql_parser
41
42
  provider = SQL::Provider.find "MySQL"
43
+ skip "don't have MySQL provider" unless provider
42
44
  assert provider.parser.parse 'SELECT topics.* FROM topics WHERE topics.id = 147 LIMIT 1'
43
45
 
44
46
  end
45
47
 
46
48
  def test_id_quote
47
49
  provider = SQL::Provider.find "MySQL"
50
+ skip "don't have MySQL provider" unless provider
48
51
  assert_equal '"1foo"', provider.quote("1foo")
49
52
  end
50
53
 
data/test/test_nodes.rb CHANGED
@@ -22,5 +22,10 @@ module GDA
22
22
  stmt = parser.parse 'SELECT * FROM OMG WHERE 1 = 10'
23
23
  assert_operator stmt.ast.to_a.length, :>, 1
24
24
  end
25
+
26
+ def test_not_equal_operator
27
+ stmt = parser.parse 'SELECT id FROM comments WHERE issue_id = 1 AND type <> 3'
28
+ assert stmt.ast.is_a?(GDA::Nodes::Select)
29
+ end
25
30
  end
26
31
  end
@@ -2,6 +2,39 @@ require 'helper'
2
2
 
3
3
  module GDA
4
4
  module SQL
5
+ class TestUnion < TestCase
6
+ attr_reader :parser, :stmt
7
+
8
+ def setup
9
+ @parser = GDA::SQL::Parser.new
10
+ sql = <<-SQL.gsub(/^ */, "")
11
+ SELECT id FROM posts WHERE actor_id = 1 AND actor_type = 1
12
+ UNION
13
+ SELECT id FROM posts WHERE actor_id = 1 AND actor_type = 3
14
+ SQL
15
+
16
+ @stmt = parser.parse(sql)
17
+ end
18
+
19
+ def test_union_query
20
+ assert_equal 2, stmt.ast.stmt_list.count
21
+ assert_equal 0, stmt.ast.compound_type, "should be an UNION type"
22
+ end
23
+
24
+ def test_union_query_visitor
25
+ visitor = Class.new(Visitors::Visitor) do
26
+ attr_reader :selects_count
27
+ def visit_GDA_Nodes_Select(*)
28
+ @selects_count ||= 0
29
+ @selects_count += 1
30
+ end
31
+ end.new
32
+
33
+ visitor.accept stmt.ast
34
+ assert_equal 2, visitor.selects_count
35
+ end
36
+ end
37
+
5
38
  class TestStatement < TestCase
6
39
  attr_reader :parser, :stmt
7
40
 
metadata CHANGED
@@ -1,85 +1,91 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gda
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-07 00:00:00.000000000 Z
11
+ date: 2022-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '4.6'
19
+ version: '5.14'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '4.6'
26
+ version: '5.14'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rdoc
28
+ name: rake-compiler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.10'
33
+ version: 0.4.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '3.10'
40
+ version: 0.4.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake-compiler
42
+ name: sqlite3
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.1
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.4.1
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: sqlite3
56
+ name: rdoc
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '4.0'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '7'
62
65
  type: :development
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - '>='
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
- version: '0'
71
+ version: '4.0'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '7'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: hoe
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - ~>
79
+ - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: '3.5'
81
+ version: '3.23'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - ~>
86
+ - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: '3.5'
88
+ version: '3.23'
83
89
  description: |-
84
90
  An SQL parser. Wraps libgda in a loving embrace to give you a ruby level SQL
85
91
  parser.
@@ -93,7 +99,7 @@ extra_rdoc_files:
93
99
  - Manifest.txt
94
100
  - README.rdoc
95
101
  files:
96
- - .autotest
102
+ - ".autotest"
97
103
  - CHANGELOG.rdoc
98
104
  - Manifest.txt
99
105
  - README.rdoc
@@ -120,36 +126,30 @@ files:
120
126
  - test/test_node_attributes.rb
121
127
  - test/test_nodes.rb
122
128
  - test/test_statement.rb
123
- - .gemtest
124
129
  homepage: http://github.com/tenderlove/gda
125
- licenses: []
126
- metadata: {}
127
- post_install_message:
130
+ licenses:
131
+ - MIT
132
+ metadata:
133
+ homepage_uri: http://github.com/tenderlove/gda
134
+ post_install_message:
128
135
  rdoc_options:
129
- - --main
136
+ - "--main"
130
137
  - README.rdoc
131
138
  require_paths:
132
139
  - lib
133
140
  required_ruby_version: !ruby/object:Gem::Requirement
134
141
  requirements:
135
- - - '>='
142
+ - - ">="
136
143
  - !ruby/object:Gem::Version
137
144
  version: 1.9.3
138
145
  required_rubygems_version: !ruby/object:Gem::Requirement
139
146
  requirements:
140
- - - '>='
147
+ - - ">="
141
148
  - !ruby/object:Gem::Version
142
149
  version: '0'
143
150
  requirements: []
144
- rubyforge_project: gda
145
- rubygems_version: 2.0.2
146
- signing_key:
151
+ rubygems_version: 3.2.22
152
+ signing_key:
147
153
  specification_version: 4
148
154
  summary: An SQL parser
149
- test_files:
150
- - test/test_dot_visitor.rb
151
- - test/test_gda.rb
152
- - test/test_max_depth.rb
153
- - test/test_node_attributes.rb
154
- - test/test_nodes.rb
155
- - test/test_statement.rb
155
+ test_files: []
data/.gemtest DELETED
File without changes