baza 0.0.34 → 0.0.38

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +13 -0
  3. data/.ruby-version +1 -1
  4. data/Gemfile +2 -2
  5. data/Gemfile.lock +45 -46
  6. data/VERSION +1 -1
  7. data/baza.gemspec +32 -51
  8. data/lib/baza/base_sql_driver.rb +38 -8
  9. data/lib/baza/cloner.rb +10 -0
  10. data/lib/baza/commands/select.rb +15 -8
  11. data/lib/baza/db.rb +8 -4
  12. data/lib/baza/driver/active_record/result.rb +3 -1
  13. data/lib/baza/driver/active_record.rb +7 -0
  14. data/lib/baza/driver/mysql/column.rb +4 -6
  15. data/lib/baza/driver/mysql/columns.rb +4 -4
  16. data/lib/baza/driver/mysql/database.rb +4 -4
  17. data/lib/baza/driver/mysql/databases.rb +5 -5
  18. data/lib/baza/driver/mysql/foreign_key.rb +2 -2
  19. data/lib/baza/driver/mysql/index.rb +1 -1
  20. data/lib/baza/driver/mysql/sql/column.rb +4 -4
  21. data/lib/baza/driver/mysql/sql/create_indexes.rb +3 -3
  22. data/lib/baza/driver/mysql/sql/create_table.rb +1 -1
  23. data/lib/baza/driver/mysql/table.rb +16 -16
  24. data/lib/baza/driver/mysql_java.rb +3 -3
  25. data/lib/baza/driver/pg/column.rb +5 -13
  26. data/lib/baza/driver/pg/columns.rb +4 -4
  27. data/lib/baza/driver/pg/create_index_sql_creator.rb +3 -3
  28. data/lib/baza/driver/pg/database.rb +4 -4
  29. data/lib/baza/driver/pg/databases.rb +1 -1
  30. data/lib/baza/driver/pg/foreign_key.rb +2 -2
  31. data/lib/baza/driver/pg/index.rb +1 -1
  32. data/lib/baza/driver/pg/table.rb +13 -13
  33. data/lib/baza/driver/pg/tables.rb +1 -1
  34. data/lib/baza/driver/pg.rb +1 -1
  35. data/lib/baza/driver/sqlite3/column.rb +1 -1
  36. data/lib/baza/driver/sqlite3/columns.rb +1 -1
  37. data/lib/baza/driver/sqlite3/index.rb +1 -1
  38. data/lib/baza/driver/sqlite3/table.rb +4 -4
  39. data/lib/baza/driver/sqlite3_java/database.rb +1 -1
  40. data/lib/baza/driver/tiny/result.rb +19 -2
  41. data/lib/baza/driver/tiny.rb +84 -10
  42. data/lib/baza/idquery.rb +3 -3
  43. data/lib/baza/mysql_base_driver.rb +3 -3
  44. data/lib/baza/query_buffer.rb +1 -1
  45. data/lib/baza/sql_queries/generic_insert.rb +3 -3
  46. data/lib/baza/sql_queries/generic_update.rb +2 -2
  47. data/lib/baza/sql_queries/mysql_upsert.rb +5 -5
  48. data/lib/baza/sql_queries/mysql_upsert_duplicate_key.rb +3 -3
  49. data/lib/baza/sql_queries/postgres_upsert_duplicate_key.rb +7 -7
  50. data/lib/baza/sql_queries/select.rb +8 -8
  51. data/lib/baza/sql_queries/sqlite_upsert_duplicate_key.rb +6 -6
  52. data/lib/baza/table.rb +3 -3
  53. data/peak_flow.yml +21 -3
  54. data/spec/baza/cloner_spec.rb +2 -2
  55. data/spec/drivers/pg/table_spec.rb +20 -0
  56. data/spec/drivers/tiny_spec.rb +27 -0
  57. data/spec/info_active_record_mysql2_peak_flow.rb +3 -2
  58. data/spec/info_active_record_mysql_peak_flow.rb +3 -2
  59. data/spec/info_active_record_pg_peak_flow.rb +5 -3
  60. data/spec/info_active_record_sqlite3.rb +6 -13
  61. data/spec/info_mysql2_peak_flow.rb +2 -1
  62. data/spec/info_mysql_peak_flow.rb +2 -1
  63. data/spec/info_pg_peak_flow.rb +3 -1
  64. data/spec/info_sqlite3.rb +3 -12
  65. data/spec/spec_helper.rb +1 -0
  66. data/spec/support/driver_collection.rb +1 -1
  67. metadata +14 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf763d9725a54b1f83dc7fdd00181b8361b150c2ebb266b11ad914c9c3d7cbfa
4
- data.tar.gz: 1818e5b131b457a5e8bb7a7e06a23a5261e5f4a2fe9812d3de6bdd10b51dccfa
3
+ metadata.gz: a023d1752c079d9018cb06a5bdeaac2e86ecfc0734983a81db8e0212eae3e781
4
+ data.tar.gz: 1435ebdda514818695aff2314609a8a05e0bc021cff3cd5650c3bb69fe9bbeb2
5
5
  SHA512:
6
- metadata.gz: 3668e2de450161e3e616beeb6c2a40a85f870bd0234956e9c5ac949615f9b49e6e51a4c069675c3ec7a69b81e42603307eafb0b0a3d76da8159981dabdd77580
7
- data.tar.gz: a3eee544394d088cf4171cfadab545521a91e42d1cb66ed6cf90fb86c95f25163056526311b6678d2b2088c01b2d4f371fb511da38e1a74ff9bcfdf2b6fbd695
6
+ metadata.gz: 100e78cf3b0f1c84e45049260190e2d3e134a4f47b62b50df2955a6aa0fb85adde9fcf4a36c797480359473a81b3845a97c99e26f07432f8901a6b045622d581
7
+ data.tar.gz: 330e48088ea16f46d78f685e0238882b2b7acf4497e18d80b020790fcc01b78fd62168cf53364f01f149d6befdcf5f6ee5796100aae8884a7c1ccec4e88410aa
@@ -0,0 +1,13 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: monthly
7
+ time: "11:00"
8
+ timezone: Europe/Copenhagen
9
+ open-pull-requests-limit: 99
10
+ ignore:
11
+ - dependency-name: activerecord
12
+ versions:
13
+ - 6.1.1
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.6
1
+ 2.7.4
data/Gemfile CHANGED
@@ -14,7 +14,7 @@ gem "wref", "~> 0.0.8"
14
14
  # Add dependencies to develop your gem here.
15
15
  # Include everything needed to run rake, tests, features, etc.
16
16
  group :development, :test do
17
- gem "activerecord", "4.2.5"
17
+ gem "activerecord"
18
18
  gem "activerecord-jdbc-adapter", platform: :jruby
19
19
  gem "best_practice_project", "0.0.9", require: false
20
20
  gem "bundler"
@@ -28,5 +28,5 @@ group :development, :test do
28
28
  gem "rdoc"
29
29
  gem "rspec", "3.4.0"
30
30
  gem "rubocop", "0.39.0", require: false
31
- gem "sqlite3", platform: :ruby
31
+ gem "sqlite3", "< 1.5", platform: :ruby
32
32
  end
data/Gemfile.lock CHANGED
@@ -1,23 +1,20 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (4.2.5)
5
- activesupport (= 4.2.5)
6
- builder (~> 3.1)
7
- activerecord (4.2.5)
8
- activemodel (= 4.2.5)
9
- activesupport (= 4.2.5)
10
- arel (~> 6.0)
11
- activerecord-jdbc-adapter (50.0)
12
- activerecord (>= 2.2)
13
- activesupport (4.2.5)
14
- i18n (~> 0.7)
15
- json (~> 1.7, >= 1.7.7)
16
- minitest (~> 5.1)
17
- thread_safe (~> 0.3, >= 0.3.4)
18
- tzinfo (~> 1.1)
4
+ activemodel (6.1.4.1)
5
+ activesupport (= 6.1.4.1)
6
+ activerecord (6.1.4.1)
7
+ activemodel (= 6.1.4.1)
8
+ activesupport (= 6.1.4.1)
9
+ activerecord-jdbc-adapter (61.1-java)
10
+ activerecord (~> 6.1.0)
11
+ activesupport (6.1.4.1)
12
+ concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ i18n (>= 1.6, < 2)
14
+ minitest (>= 5.1)
15
+ tzinfo (~> 2.0)
16
+ zeitwerk (~> 2.3)
19
17
  addressable (2.4.0)
20
- arel (6.0.4)
21
18
  array_enumerator (0.0.10)
22
19
  ast (2.4.0)
23
20
  auto_autoloader (0.0.5)
@@ -25,9 +22,8 @@ GEM
25
22
  best_practice_project (0.0.9)
26
23
  auto_autoloader
27
24
  builder (3.2.3)
28
- coderay (1.1.2)
29
- concurrent-ruby (1.0.5)
30
- concurrent-ruby (1.0.5-java)
25
+ coderay (1.1.3)
26
+ concurrent-ruby (1.1.9)
31
27
  datet (0.0.25)
32
28
  descendants_tracker (0.0.4)
33
29
  thread_safe (~> 0.3, >= 0.3.1)
@@ -35,7 +31,7 @@ GEM
35
31
  event_handler (0.0.0)
36
32
  faraday (0.9.2)
37
33
  multipart-post (>= 1.2, < 3)
38
- ffi (1.9.23-java)
34
+ ffi (1.15.0-java)
39
35
  git (1.3.0)
40
36
  github_api (0.16.0)
41
37
  addressable (~> 2.4.0)
@@ -46,11 +42,11 @@ GEM
46
42
  oauth2 (~> 1.0)
47
43
  hashie (3.5.7)
48
44
  highline (1.7.10)
49
- i18n (0.9.5)
45
+ i18n (1.8.10)
50
46
  concurrent-ruby (~> 1.0)
51
47
  jar-dependencies (0.3.12)
52
- jdbc-mysql (5.1.44)
53
- jdbc-sqlite3 (3.20.1)
48
+ jdbc-mysql (8.0.17)
49
+ jdbc-sqlite3 (3.28.0)
54
50
  jeweler (2.3.9)
55
51
  builder
56
52
  bundler
@@ -62,20 +58,20 @@ GEM
62
58
  rake
63
59
  rdoc
64
60
  semver2
65
- json (1.8.6)
66
- json (1.8.6-java)
67
61
  jwt (1.5.6)
68
- method_source (0.9.0)
62
+ method_source (1.0.0)
69
63
  mime-types (2.99.3)
70
- mini_portile2 (2.3.0)
71
- minitest (5.11.3)
64
+ mini_portile2 (2.6.1)
65
+ minitest (5.14.4)
72
66
  multi_json (1.13.1)
73
67
  multi_xml (0.6.0)
74
68
  multipart-post (2.0.0)
75
69
  mysql2 (0.4.10)
76
- nokogiri (1.8.2)
77
- mini_portile2 (~> 2.3.0)
78
- nokogiri (1.8.2-java)
70
+ nokogiri (1.12.5)
71
+ mini_portile2 (~> 2.6.1)
72
+ racc (~> 1.4)
73
+ nokogiri (1.12.5-java)
74
+ racc (~> 1.4)
79
75
  oauth2 (1.4.0)
80
76
  faraday (>= 0.8, < 0.13)
81
77
  jwt (~> 1.0)
@@ -86,21 +82,23 @@ GEM
86
82
  ast (~> 2.4.0)
87
83
  pg (0.21.0)
88
84
  powerpack (0.1.1)
89
- pry (0.11.3)
90
- coderay (~> 1.1.0)
91
- method_source (~> 0.9.0)
92
- pry (0.11.3-java)
93
- coderay (~> 1.1.0)
94
- method_source (~> 0.9.0)
85
+ pry (0.14.1)
86
+ coderay (~> 1.1)
87
+ method_source (~> 1.0)
88
+ pry (0.14.1-java)
89
+ coderay (~> 1.1)
90
+ method_source (~> 1.0)
95
91
  spoon (~> 0.0)
96
92
  psych (3.0.2)
97
93
  psych (3.0.2-java)
98
94
  jar-dependencies (>= 0.1.7)
99
- rack (2.0.4)
95
+ racc (1.5.2)
96
+ racc (1.5.2-java)
97
+ rack (2.2.3)
100
98
  rainbow (2.2.2)
101
99
  rake
102
- rake (12.3.1)
103
- rdoc (6.0.3)
100
+ rake (13.0.1)
101
+ rdoc (6.3.2)
104
102
  rspec (3.4.0)
105
103
  rspec-core (~> 3.4.0)
106
104
  rspec-expectations (~> 3.4.0)
@@ -125,21 +123,22 @@ GEM
125
123
  simple_delegate (0.0.2)
126
124
  spoon (0.0.6)
127
125
  ffi
128
- sqlite3 (1.3.13)
126
+ sqlite3 (1.4.2)
129
127
  string-cases (0.0.4)
130
128
  thread_safe (0.3.6)
131
129
  thread_safe (0.3.6-java)
132
- tzinfo (1.2.5)
133
- thread_safe (~> 0.1)
130
+ tzinfo (2.0.4)
131
+ concurrent-ruby (~> 1.0)
134
132
  unicode-display_width (1.3.0)
135
133
  wref (0.0.8)
134
+ zeitwerk (2.4.2)
136
135
 
137
136
  PLATFORMS
138
137
  java
139
138
  ruby
140
139
 
141
140
  DEPENDENCIES
142
- activerecord (= 4.2.5)
141
+ activerecord
143
142
  activerecord-jdbc-adapter
144
143
  array_enumerator (~> 0.0.10)
145
144
  auto_autoloader (~> 0.0.5)
@@ -157,9 +156,9 @@ DEPENDENCIES
157
156
  rspec (= 3.4.0)
158
157
  rubocop (= 0.39.0)
159
158
  simple_delegate (~> 0.0.2)
160
- sqlite3
159
+ sqlite3 (< 1.5)
161
160
  string-cases (~> 0.0.4)
162
161
  wref (~> 0.0.8)
163
162
 
164
163
  BUNDLED WITH
165
- 1.16.1
164
+ 2.2.28
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.34
1
+ 0.0.38
data/baza.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: baza 0.0.34 ruby lib
5
+ # stub: baza 0.0.38 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "baza".freeze
9
- s.version = "0.0.34"
9
+ s.version = "0.0.38"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Kasper Johansen".freeze]
14
- s.date = "2018-06-07"
14
+ s.date = "2021-10-04"
15
15
  s.description = "A database abstraction layer, model framework and database framework.".freeze
16
16
  s.email = "kj@gfish.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
+ ".github/dependabot.yml",
23
24
  ".rspec",
24
25
  ".rubocop.yml",
25
26
  ".rubocop_todo.yml",
@@ -175,8 +176,10 @@ Gem::Specification.new do |s|
175
176
  "spec/drivers/mysql2_spec.rb",
176
177
  "spec/drivers/mysql_spec.rb",
177
178
  "spec/drivers/pg/columns_spec.rb",
179
+ "spec/drivers/pg/table_spec.rb",
178
180
  "spec/drivers/pg_spec.rb",
179
181
  "spec/drivers/sqlite3_spec.rb",
182
+ "spec/drivers/tiny_spec.rb",
180
183
  "spec/info_active_record_example.rb",
181
184
  "spec/info_active_record_mysql2_example.rb",
182
185
  "spec/info_active_record_mysql2_peak_flow.rb",
@@ -205,57 +208,35 @@ Gem::Specification.new do |s|
205
208
  ]
206
209
  s.homepage = "http://github.com/kaspernj/baza".freeze
207
210
  s.licenses = ["MIT".freeze]
208
- s.rubygems_version = "2.7.7".freeze
211
+ s.rubygems_version = "3.1.6".freeze
209
212
  s.summary = "A database abstraction layer, model framework and database framework.".freeze
210
213
 
211
214
  if s.respond_to? :specification_version then
212
215
  s.specification_version = 4
216
+ end
213
217
 
214
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
215
- s.add_runtime_dependency(%q<array_enumerator>.freeze, ["~> 0.0.10"])
216
- s.add_runtime_dependency(%q<auto_autoloader>.freeze, ["~> 0.0.5"])
217
- s.add_runtime_dependency(%q<datet>.freeze, ["~> 0.0.25"])
218
- s.add_runtime_dependency(%q<event_handler>.freeze, ["~> 0.0.0"])
219
- s.add_runtime_dependency(%q<simple_delegate>.freeze, ["~> 0.0.2"])
220
- s.add_runtime_dependency(%q<string-cases>.freeze, ["~> 0.0.4"])
221
- s.add_runtime_dependency(%q<wref>.freeze, ["~> 0.0.8"])
222
- s.add_development_dependency(%q<activerecord>.freeze, ["= 4.2.5"])
223
- s.add_development_dependency(%q<activerecord-jdbc-adapter>.freeze, [">= 0"])
224
- s.add_development_dependency(%q<best_practice_project>.freeze, ["= 0.0.9"])
225
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
226
- s.add_development_dependency(%q<jdbc-mysql>.freeze, [">= 0"])
227
- s.add_development_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
228
- s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
229
- s.add_development_dependency(%q<mysql2>.freeze, ["= 0.4.10"])
230
- s.add_development_dependency(%q<pg>.freeze, ["= 0.21.0"])
231
- s.add_development_dependency(%q<pry>.freeze, [">= 0"])
232
- s.add_development_dependency(%q<rdoc>.freeze, [">= 0"])
233
- s.add_development_dependency(%q<rspec>.freeze, ["= 3.4.0"])
234
- s.add_development_dependency(%q<rubocop>.freeze, ["= 0.39.0"])
235
- s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
236
- else
237
- s.add_dependency(%q<array_enumerator>.freeze, ["~> 0.0.10"])
238
- s.add_dependency(%q<auto_autoloader>.freeze, ["~> 0.0.5"])
239
- s.add_dependency(%q<datet>.freeze, ["~> 0.0.25"])
240
- s.add_dependency(%q<event_handler>.freeze, ["~> 0.0.0"])
241
- s.add_dependency(%q<simple_delegate>.freeze, ["~> 0.0.2"])
242
- s.add_dependency(%q<string-cases>.freeze, ["~> 0.0.4"])
243
- s.add_dependency(%q<wref>.freeze, ["~> 0.0.8"])
244
- s.add_dependency(%q<activerecord>.freeze, ["= 4.2.5"])
245
- s.add_dependency(%q<activerecord-jdbc-adapter>.freeze, [">= 0"])
246
- s.add_dependency(%q<best_practice_project>.freeze, ["= 0.0.9"])
247
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
248
- s.add_dependency(%q<jdbc-mysql>.freeze, [">= 0"])
249
- s.add_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
250
- s.add_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
251
- s.add_dependency(%q<mysql2>.freeze, ["= 0.4.10"])
252
- s.add_dependency(%q<pg>.freeze, ["= 0.21.0"])
253
- s.add_dependency(%q<pry>.freeze, [">= 0"])
254
- s.add_dependency(%q<rdoc>.freeze, [">= 0"])
255
- s.add_dependency(%q<rspec>.freeze, ["= 3.4.0"])
256
- s.add_dependency(%q<rubocop>.freeze, ["= 0.39.0"])
257
- s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
258
- end
218
+ if s.respond_to? :add_runtime_dependency then
219
+ s.add_runtime_dependency(%q<array_enumerator>.freeze, ["~> 0.0.10"])
220
+ s.add_runtime_dependency(%q<auto_autoloader>.freeze, ["~> 0.0.5"])
221
+ s.add_runtime_dependency(%q<datet>.freeze, ["~> 0.0.25"])
222
+ s.add_runtime_dependency(%q<event_handler>.freeze, ["~> 0.0.0"])
223
+ s.add_runtime_dependency(%q<simple_delegate>.freeze, ["~> 0.0.2"])
224
+ s.add_runtime_dependency(%q<string-cases>.freeze, ["~> 0.0.4"])
225
+ s.add_runtime_dependency(%q<wref>.freeze, ["~> 0.0.8"])
226
+ s.add_development_dependency(%q<activerecord>.freeze, [">= 0"])
227
+ s.add_development_dependency(%q<activerecord-jdbc-adapter>.freeze, [">= 0"])
228
+ s.add_development_dependency(%q<best_practice_project>.freeze, ["= 0.0.9"])
229
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
230
+ s.add_development_dependency(%q<jdbc-mysql>.freeze, [">= 0"])
231
+ s.add_development_dependency(%q<jdbc-sqlite3>.freeze, [">= 0"])
232
+ s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
233
+ s.add_development_dependency(%q<mysql2>.freeze, ["= 0.4.10"])
234
+ s.add_development_dependency(%q<pg>.freeze, ["= 0.21.0"])
235
+ s.add_development_dependency(%q<pry>.freeze, [">= 0"])
236
+ s.add_development_dependency(%q<rdoc>.freeze, [">= 0"])
237
+ s.add_development_dependency(%q<rspec>.freeze, ["= 3.4.0"])
238
+ s.add_development_dependency(%q<rubocop>.freeze, ["= 0.39.0"])
239
+ s.add_development_dependency(%q<sqlite3>.freeze, ["< 1.5"])
259
240
  else
260
241
  s.add_dependency(%q<array_enumerator>.freeze, ["~> 0.0.10"])
261
242
  s.add_dependency(%q<auto_autoloader>.freeze, ["~> 0.0.5"])
@@ -264,7 +245,7 @@ Gem::Specification.new do |s|
264
245
  s.add_dependency(%q<simple_delegate>.freeze, ["~> 0.0.2"])
265
246
  s.add_dependency(%q<string-cases>.freeze, ["~> 0.0.4"])
266
247
  s.add_dependency(%q<wref>.freeze, ["~> 0.0.8"])
267
- s.add_dependency(%q<activerecord>.freeze, ["= 4.2.5"])
248
+ s.add_dependency(%q<activerecord>.freeze, [">= 0"])
268
249
  s.add_dependency(%q<activerecord-jdbc-adapter>.freeze, [">= 0"])
269
250
  s.add_dependency(%q<best_practice_project>.freeze, ["= 0.0.9"])
270
251
  s.add_dependency(%q<bundler>.freeze, [">= 0"])
@@ -277,7 +258,7 @@ Gem::Specification.new do |s|
277
258
  s.add_dependency(%q<rdoc>.freeze, [">= 0"])
278
259
  s.add_dependency(%q<rspec>.freeze, ["= 3.4.0"])
279
260
  s.add_dependency(%q<rubocop>.freeze, ["= 0.39.0"])
280
- s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
261
+ s.add_dependency(%q<sqlite3>.freeze, ["< 1.5"])
281
262
  end
282
263
  end
283
264
 
@@ -54,6 +54,14 @@ class Baza::BaseSqlDriver
54
54
  self.class.escape_column(string)
55
55
  end
56
56
 
57
+ def self.quote_column(column_name)
58
+ "#{SEPARATOR_COLUMN}#{escape_column(column_name)}#{SEPARATOR_COLUMN}"
59
+ end
60
+
61
+ def quote_column(column_name)
62
+ "#{sep_col}#{escape_column(column_name)}#{sep_col}"
63
+ end
64
+
57
65
  def self.escape_table(string)
58
66
  string = string.to_s
59
67
  raise "Invalid table-string: #{string}" if string.include?(SEPARATOR_TABLE)
@@ -64,6 +72,14 @@ class Baza::BaseSqlDriver
64
72
  self.class.escape_table(string)
65
73
  end
66
74
 
75
+ def self.quote_table(table_name)
76
+ "#{SEPARATOR_TABLE}#{escape_table(table_name)}#{SEPARATOR_TABLE}"
77
+ end
78
+
79
+ def quote_table(table_name)
80
+ "#{sep_table}#{escape_table(table_name)}#{sep_table}"
81
+ end
82
+
67
83
  def self.escape_database(string)
68
84
  string = string.to_s
69
85
  raise "Invalid database-string: #{string}" if string.include?(SEPARATOR_DATABASE)
@@ -74,6 +90,14 @@ class Baza::BaseSqlDriver
74
90
  self.class.escape_database(string)
75
91
  end
76
92
 
93
+ def self.quote_database(database_name)
94
+ "#{SEPARATOR_DATABASE}#{escape_database(database_name)}#{SEPARATOR_DATABASE}"
95
+ end
96
+
97
+ def quote_database(database_name)
98
+ "#{sep_database}#{escape_database(database_name)}#{sep_database}"
99
+ end
100
+
77
101
  def self.escape_index(string)
78
102
  string = string.to_s
79
103
  raise "Invalid index-string: #{string}" if string.include?(SEPARATOR_INDEX)
@@ -84,6 +108,14 @@ class Baza::BaseSqlDriver
84
108
  self.class.escape_index(string)
85
109
  end
86
110
 
111
+ def self.quote_index(index_name)
112
+ "#{SEPARATOR_INDEX}#{escape_index(index_name)}#{SEPARATOR_INDEX}"
113
+ end
114
+
115
+ def quote_index(index_name)
116
+ "#{sep_index}#{escape_index(index_name)}#{sep_index}"
117
+ end
118
+
87
119
  def transaction
88
120
  @db.q("BEGIN TRANSACTION")
89
121
 
@@ -146,7 +178,7 @@ class Baza::BaseSqlDriver
146
178
  end
147
179
 
148
180
  def count(tablename, arr_terms = nil)
149
- sql = "SELECT COUNT(*) AS count FROM #{@sep_table}#{tablename}#{@sep_table}"
181
+ sql = "SELECT COUNT(*) AS count FROM #{quote_table(tablename)}"
150
182
 
151
183
  if !arr_terms.nil? && !arr_terms.empty?
152
184
  sql << " WHERE #{sql_make_where(arr_terms)}"
@@ -169,7 +201,7 @@ class Baza::BaseSqlDriver
169
201
  #===Examples
170
202
  # db.delete(:users, {lastname: "Doe"})
171
203
  def delete(tablename, arr_terms, args = nil)
172
- sql = "DELETE FROM #{@sep_table}#{tablename}#{@sep_table}"
204
+ sql = "DELETE FROM #{quote_table(tablename)}"
173
205
 
174
206
  if !arr_terms.nil? && !arr_terms.empty?
175
207
  sql << " WHERE #{sql_make_where(arr_terms)}"
@@ -199,11 +231,11 @@ class Baza::BaseSqlDriver
199
231
  if value.is_a?(Array)
200
232
  raise "Array for column '#{key}' was empty." if value.empty?
201
233
  values = value.map { |v| "'#{escape(v)}'" }.join(",")
202
- sql << "#{@sep_col}#{key}#{@sep_col} IN (#{values})"
234
+ sql << "#{quote_column(key)} IN (#{values})"
203
235
  elsif value.is_a?(Hash)
204
236
  raise "Dont know how to handle hash."
205
237
  else
206
- sql << "#{@sep_col}#{key}#{@sep_col} = #{sqlval(value)}"
238
+ sql << "#{quote_column(key)} = #{quote_value(value)}"
207
239
  end
208
240
  end
209
241
 
@@ -213,7 +245,7 @@ class Baza::BaseSqlDriver
213
245
  # Returns the correct SQL-value for the given value.
214
246
  # If it is a number, then just the raw number as a string will be returned.
215
247
  # nil's will be NULL and strings will have quotes and will be escaped.
216
- def self.sqlval(val)
248
+ def self.quote_value(val)
217
249
  if val.class.name == "Fixnum" || val.is_a?(Integer)
218
250
  val.to_s
219
251
  elsif val == nil
@@ -227,9 +259,7 @@ class Baza::BaseSqlDriver
227
259
  end
228
260
  end
229
261
 
230
- def sqlval(val)
231
- return @conn.sqlval(val) if @conn.respond_to?(:sqlval)
232
-
262
+ def quote_value(val)
233
263
  if val.class.name == "Fixnum" || val.is_a?(Integer)
234
264
  val.to_s
235
265
  elsif val == nil
data/lib/baza/cloner.rb CHANGED
@@ -24,6 +24,16 @@ class Baza::Cloner
24
24
  conn: connection
25
25
  }
26
26
 
27
+ Baza::Db.new(db_args)
28
+ elsif connection.class.name.include?("PostgreSQLAdapter")
29
+ connection = connection.instance_variable_get(:@connection)
30
+ connection = connection.instance_variable_get(:@connection) if RUBY_PLATFORM == "java"
31
+
32
+ db_args = {
33
+ type: :pg,
34
+ conn: connection
35
+ }
36
+
27
37
  Baza::Db.new(db_args)
28
38
  else
29
39
  raise "Unsupported adapter: #{connection.class.name}"
@@ -18,7 +18,7 @@ class Baza::Commands::Select
18
18
  add_select_sql
19
19
  add_terms_sql
20
20
  add_order_sql
21
- add_limit_sql
21
+ add_limit_sql unless @db.mssql?
22
22
 
23
23
  result = execute_query
24
24
 
@@ -36,21 +36,23 @@ private
36
36
  # Set up IDQuery-stuff if that is given in arguments.
37
37
  if @args && @args[:idquery]
38
38
  if @args.fetch(:idquery) == true
39
- select_sql = "#{@db.sep_col}id#{@db.sep_col}"
39
+ select_sql = "#{@db.quote_column(:id)}"
40
40
  @col = :id
41
41
  else
42
- select_sql = "#{@db.sep_col}#{@db.escape_column(@args.fetch(:idquery))}#{@db.sep_col}"
42
+ select_sql = "#{@db.quote_column(@args.fetch(:idquery))}"
43
43
  @col = @args.fetch(:idquery)
44
44
  end
45
45
  end
46
46
 
47
47
  select_sql ||= "*"
48
- @sql << "SELECT #{select_sql} FROM"
48
+ @sql << "SELECT"
49
+ @sql << top_sql if @db.mssql?
50
+ @sql << " #{select_sql} FROM"
49
51
 
50
52
  if @table_name.is_a?(Array)
51
- @sql << " #{@sep_table}#{@table_name.first}#{@sep_table}.#{@sep_table}#{@table_name.last}#{@sep_table}"
53
+ @sql << " #{@db.quote_table(@table_name.first)}.#{@db.quote_table(@table_name.last)}"
52
54
  else
53
- @sql << " #{@sep_table}#{@table_name}#{@sep_table}"
55
+ @sql << " #{@db.quote_table(@table_name)}"
54
56
  end
55
57
  end
56
58
 
@@ -69,10 +71,10 @@ private
69
71
  @args.fetch(:orderby).each do |order_by|
70
72
  @sql << "," unless first
71
73
  first = false if first
72
- @sql << " #{@db.sep_col}#{@db.escape_column(order_by)}#{@db.sep_col}"
74
+ @sql << " #{@db.quote_column(order_by)}"
73
75
  end
74
76
  else
75
- @sql << " #{@db.sep_col}#{@db.escape_column(@args.fetch(:orderby))}#{@db.sep_col}"
77
+ @sql << " #{@db.quote_column(@args.fetch(:orderby))}"
76
78
  end
77
79
  end
78
80
  end
@@ -99,6 +101,11 @@ private
99
101
  end
100
102
  end
101
103
 
104
+ def top_sql
105
+ return unless @args[:limit]
106
+ " TOP #{@args[:limit].to_i}"
107
+ end
108
+
102
109
  def execute_query
103
110
  # Do IDQuery if given in arguments.
104
111
  if @args && @args[:idquery]
data/lib/baza/db.rb CHANGED
@@ -16,7 +16,7 @@ class Baza::Db
16
16
 
17
17
  delegate :last_id, :upsert, :upsert_duplicate_key, to: :commands
18
18
  delegate :current_database, :current_database_name, :with_database, to: :databases
19
- delegate :close, :count, :delete, :esc, :escape, :escape_column, :escape_table, :escape_database, :escape_index, :insert, :select, :single, :sqlval, :sql_make_where, to: :driver
19
+ delegate *%i[close count delete esc escape escape_column escape_table escape_database escape_index quote_database quote_column quote_table quote_value quote_database quote_index insert select single quote_value sql_make_where], to: :driver
20
20
 
21
21
  attr_reader :sep_database, :sep_col, :sep_table, :sep_val, :sep_index, :opts, :driver, :int_types
22
22
 
@@ -444,14 +444,18 @@ class Baza::Db
444
444
  end
445
445
 
446
446
  def sqlite?
447
- @sqlite ||= @driver.class.name.downcase.include?("sqlite")
447
+ @driver.class.name.downcase.include?("sqlite")
448
448
  end
449
449
 
450
450
  def mysql?
451
- @mysql ||= @driver.class.name.downcase.include?("mysql")
451
+ @driver.class.name.downcase.include?("mysql")
452
+ end
453
+
454
+ def mssql?
455
+ @driver.class.name.downcase.include?("tiny")
452
456
  end
453
457
 
454
458
  def postgres?
455
- @postgres ||= @driver.class.name.downcase.include?("pg")
459
+ @driver.class.name.downcase.include?("pg")
456
460
  end
457
461
  end
@@ -14,7 +14,9 @@ class Baza::Driver::ActiveRecord::Result < Baza::ResultBase
14
14
  return unless @result
15
15
 
16
16
  @result.each do |result|
17
- result = result.delete_if { |k, _v| k.class.name == "Fixnum" } # Seems like this happens depending on the version installed? - kaspernj
17
+ # Seems like this happens depending on the version installed? - kaspernj
18
+ result = result.delete_if { |k, _v| k.class.name == "Integer" || k.class.name == "Fixnum" }
19
+
18
20
  result = Hash[result.map { |k, v| [k, v.to_s] }] if @type_translation == :string
19
21
 
20
22
  yield result.symbolize_keys
@@ -80,10 +80,17 @@ class Baza::Driver::ActiveRecord < Baza::BaseSqlDriver
80
80
  if conn_name.include?("mysql")
81
81
  @db.opts[:db] ||= query("SELECT DATABASE()").fetch.fetch(:"DATABASE()")
82
82
  elsif @driver_type == :pg
83
+ @conn.reconnect! unless postgres_connection_active?
83
84
  @db.opts[:db] ||= query("SELECT current_database()").fetch.values.first
84
85
  end
85
86
  end
86
87
 
88
+ def postgres_connection_active?
89
+ @conn.active?
90
+ rescue PG::ConnectionBad
91
+ true
92
+ end
93
+
87
94
  def query(sql)
88
95
  @result_constant.new(self, @conn.execute(sql))
89
96
  end
@@ -23,7 +23,7 @@ class Baza::Driver::Mysql::Column < Baza::Column
23
23
  other_table = other_column.table
24
24
 
25
25
  sql = "
26
- ALTER TABLE #{@db.escape_table(table_name)}
26
+ ALTER TABLE #{@db.quote_table(table_name)}
27
27
  ADD CONSTRAINT #{@db.escape_table(fk_name)}
28
28
  FOREIGN KEY (#{@db.escape_table(name)})
29
29
  REFERENCES #{@db.escape_table(other_table.name)} (#{@db.escape_column(other_column.name)})
@@ -39,7 +39,7 @@ class Baza::Driver::Mysql::Column < Baza::Column
39
39
  end
40
40
 
41
41
  def reload
42
- data = @db.query("SHOW FULL COLUMNS FROM `#{@db.escape_table(table_name)}` WHERE `Field` = '#{@db.esc(name)}'").fetch
42
+ data = @db.query("SHOW FULL COLUMNS FROM #{@db.quote_table(table_name)} WHERE #{@db.quote_column("Field")} = #{@db.quote_value(name)}").fetch
43
43
  raise Baza::Errors::ColumnNotFound unless data
44
44
  @data = data
45
45
  @type = nil
@@ -105,15 +105,13 @@ class Baza::Driver::Mysql::Column < Baza::Column
105
105
 
106
106
  # Drops the column from the table.
107
107
  def drop
108
- @db.query("ALTER TABLE `#{@db.escape_table(table_name)}` DROP COLUMN `#{@db.escape_column(name)}`")
108
+ @db.query("ALTER TABLE #{@db.quote_table(table_name)} DROP COLUMN #{@db.quote_column(name)}")
109
109
  table.__send__(:remove_column_from_list, self)
110
110
  nil
111
111
  end
112
112
 
113
113
  # Changes the column properties by the given hash.
114
114
  def change(data)
115
- col_escaped = "#{@db.sep_col}#{@db.escape_column(name)}#{@db.sep_col}"
116
- table_escape = "#{@db.sep_table}#{@db.escape_table(table_name)}#{@db.sep_table}"
117
115
  newdata = data.clone
118
116
 
119
117
  newdata[:name] = name unless newdata.key?(:name)
@@ -126,7 +124,7 @@ class Baza::Driver::Mysql::Column < Baza::Column
126
124
  drop_add = true if name.to_s != newdata[:name].to_s
127
125
 
128
126
  table.__send__(:remove_column_from_list, self) if drop_add
129
- @db.query("ALTER TABLE #{table_escape} CHANGE #{col_escaped} #{@db.columns.data_sql(newdata)}")
127
+ @db.query("ALTER TABLE #{@db.quote_table(table_name)} CHANGE #{@db.quote_column(name)} #{@db.columns.data_sql(newdata)}")
130
128
  @name = newdata[:name].to_s
131
129
  reload
132
130
  table.__send__(:add_column_to_list, self) if drop_add