pgslice 0.2.2 → 0.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5697462268c630c5fd8e72567fe4ac9b903d157
4
- data.tar.gz: 686af5d5c45edff42d491f7378f1338299aa6a14
3
+ metadata.gz: 4e0437c8314b62daec17ddf072a9f269fa6b7aa1
4
+ data.tar.gz: 311105b8057bc43cf9ff75a7a8be0dc62b707c9b
5
5
  SHA512:
6
- metadata.gz: e09e05ebe4cad9c34fae30ca04f6c6fe5ff6a1f3bb175ea55af9e29add720e9d6319939dd92be320d3360957c03cc5756862c8ef1918ff2d5277c7c47e315a88
7
- data.tar.gz: cac51539b16171d3a54f4a93d3ee4539ae50b34267727fa883614c341693b49894951537fd45e0e4432ba78bbe8e9f21b1d7a932cf0f3f2ab4967b0c2c0ca2c7
6
+ metadata.gz: 4db509fb649e78d0fac104071e58621b54a01bc5b17b53bbd5aa786ee9908e657ed6adaf6e407ffae28cfc81549cdde76512e4a6b9195a18ac421ac31eb21755
7
+ data.tar.gz: a43f16632bca4827762396778d3ed23718046f774e584ef65b6a48af8245d195014c4f628a190f9e58c0d534b4bd9b8aaf4dd59d776d4428e9f56afdaacc69ae
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.2.3
2
+
3
+ - Added `--dest-table` option to `fill`
4
+ - Fixed errors with `fill` when no partitions created
5
+
1
6
  ## 0.2.2
2
7
 
3
8
  - Set `lock_timeout` on `swap` to prevent bad things from happening
@@ -1,3 +1,3 @@
1
1
  module PgSlice
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
data/lib/pgslice.rb CHANGED
@@ -214,13 +214,14 @@ CREATE OR REPLACE FUNCTION #{trigger_name}()
214
214
  abort "Usage: pgslice fill <table>" if arguments.length != 1
215
215
 
216
216
  source_table = options[:source_table]
217
+ dest_table = options[:dest_table]
217
218
 
218
219
  if options[:swapped]
219
220
  source_table ||= retired_name(table)
220
- dest_table = table
221
+ dest_table ||= table
221
222
  else
222
223
  source_table ||= table
223
- dest_table = intermediate_name(table)
224
+ dest_table ||= intermediate_name(table)
224
225
  end
225
226
 
226
227
  abort "Table not found: #{source_table}" unless table_exists?(source_table)
@@ -232,17 +233,19 @@ CREATE OR REPLACE FUNCTION #{trigger_name}()
232
233
  name_format = self.name_format(period)
233
234
 
234
235
  existing_tables = self.existing_tables(like: "#{table}_%").select { |t| /#{Regexp.escape("#{table}_")}(\d{4,6})/.match(t) }.sort
235
- starting_time = DateTime.strptime(existing_tables.first.split("_").last, name_format)
236
- ending_time = advance_date(DateTime.strptime(existing_tables.last.split("_").last, name_format), period, 1)
236
+ if existing_tables.any?
237
+ starting_time = DateTime.strptime(existing_tables.first.split("_").last, name_format)
238
+ ending_time = advance_date(DateTime.strptime(existing_tables.last.split("_").last, name_format), period, 1)
239
+ end
237
240
  end
238
241
 
239
242
  primary_key = self.primary_key(table)
240
243
  max_source_id = max_id(source_table, primary_key)
241
244
  max_dest_id =
242
245
  if options[:swapped]
243
- max_id(dest_table, primary_key, below: max_source_id)
246
+ max_id(dest_table, primary_key, where: options[:where], below: max_source_id)
244
247
  else
245
- max_id(dest_table, primary_key)
248
+ max_id(dest_table, primary_key, where: options[:where])
246
249
  end
247
250
 
248
251
  if max_dest_id == 0 && !options[:swapped]
@@ -262,7 +265,7 @@ CREATE OR REPLACE FUNCTION #{trigger_name}()
262
265
  batch_count = ((max_source_id - starting_id) / batch_size.to_f).ceil
263
266
  while starting_id < max_source_id
264
267
  where = "#{primary_key} > #{starting_id} AND #{primary_key} <= #{starting_id + batch_size}"
265
- if period
268
+ if starting_time
266
269
  where << " AND #{field} >= #{sql_date(starting_time)} AND #{field} < #{sql_date(ending_time)}"
267
270
  end
268
271
  if options[:where]
@@ -350,6 +353,7 @@ INSERT INTO #{dest_table} (#{fields})
350
353
  o.integer "--start"
351
354
  o.string "--url"
352
355
  o.string "--source-table"
356
+ o.string "--dest-table"
353
357
  o.string "--where"
354
358
  o.string "--lock-timeout", default: "5s"
355
359
  o.on "-v", "--version", "print the version" do
@@ -460,9 +464,12 @@ INSERT INTO #{dest_table} (#{fields})
460
464
  row && row["attname"]
461
465
  end
462
466
 
463
- def max_id(table, primary_key, below: nil)
467
+ def max_id(table, primary_key, below: nil, where: nil)
464
468
  query = "SELECT MAX(#{primary_key}) FROM #{table}"
465
- query << " WHERE #{primary_key} <= #{below}" if below
469
+ conditions = []
470
+ conditions << "#{primary_key} <= #{below}" if below
471
+ conditions << where if where
472
+ query << " WHERE #{conditions.join(" AND ")}" if conditions.any?
466
473
  execute(query)[0]["max"].to_i
467
474
  end
468
475
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgslice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-07 00:00:00.000000000 Z
11
+ date: 2016-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop