baza 0.0.34 → 0.0.38

Sign up to get free protection for your applications and to get access to all the features.
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