blackstack-deployer 1.2.6 → 1.2.9
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 +4 -4
- data/lib/blackstack-deployer.rb +27 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2197d07351cc7992754e1a97848f862cece1e90384b539a93d89fb765a200a7
|
4
|
+
data.tar.gz: 849d35bb7fa51c2071a9567fe2a9ab01fd75d7c50d239da9446f09c81a2db3e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a67164cd4df13e59d5e3258700d7ebe2451b1b787e315968d7ea5647866138d90ac5acaee8ed2c4f660fcf179af5c6aeacfdb6aafa71ca1c9a1d14c8f0e71a63
|
7
|
+
data.tar.gz: 8893cf809bf4d011ac52e2cb161fe38cfbc700bcf418d6ca630d38696b8508f6ddb01e0749d8b2eaba0767b089d83830278b692167108541ee3da17fbd37cab2
|
data/lib/blackstack-deployer.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#require 'blackstack-nodes'
|
2
|
-
|
2
|
+
require'blackstack-nodes'
|
3
3
|
|
4
4
|
require 'sequel'
|
5
5
|
|
@@ -568,18 +568,36 @@ module BlackStack
|
|
568
568
|
# Reference: https://stackoverflow.com/questions/64066344/import-large-sql-files-with-ruby-sequel-gem
|
569
569
|
# This method is called by `BlackStack::Deployer::db_execute_file` if the filename matches with `/\.sentences\./`.
|
570
570
|
# This method should not be called directly by user code.
|
571
|
-
def self.execute_sentences(sql)
|
571
|
+
def self.execute_sentences(sql, chunk_size=200)
|
572
572
|
tlogger = BlackStack::Deployer::logger
|
573
573
|
|
574
574
|
# Fix issue: Ruby `split': invalid byte sequence in UTF-8 (ArgumentError)
|
575
575
|
# Reference: https://stackoverflow.com/questions/11065962/ruby-split-invalid-byte-sequence-in-utf-8-argumenterror
|
576
|
-
|
577
|
-
|
578
|
-
#
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
576
|
+
#
|
577
|
+
# Fix issue: `PG::SyntaxError: ERROR: at or near "��truncate": syntax error`
|
578
|
+
#
|
579
|
+
sql.encode!('UTF-8', :invalid => :replace, :replace => '')
|
580
|
+
|
581
|
+
# Remove null bytes to avoid error: `String contains null byte`
|
582
|
+
# Reference: https://stackoverflow.com/questions/29320369/coping-with-string-contains-null-byte-sent-from-users
|
583
|
+
sql.gsub!("\u0000", "")
|
584
|
+
|
585
|
+
# Get the array of sentences
|
586
|
+
tlogger.logs "Splitting the sql sentences... "
|
587
|
+
sentences = sql.split(/;/i)
|
588
|
+
tlogger.logf "done (#{sentences.size})"
|
589
|
+
|
590
|
+
# Chunk the array into parts of chunk_size elements
|
591
|
+
# Reference: https://stackoverflow.com/questions/2699584/how-to-split-chunk-a-ruby-array-into-parts-of-x-elements
|
592
|
+
tlogger.logs "Bunlding the array of sentences into chunks of #{chunk_size} each... "
|
593
|
+
chunks = sentences.each_slice(chunk_size).to_a
|
594
|
+
tlogger.logf "done (#{chunks.size})"
|
595
|
+
|
596
|
+
chunk_number = -1
|
597
|
+
chunks.each { |chunk|
|
598
|
+
chunk_number += 1
|
599
|
+
statement = chunk.join(";\n").to_s.strip
|
600
|
+
tlogger.logs "lines #{chunk_size*chunk_number+1} to #{chunk_size*chunk_number+chunk.size} of #{sentences.size}... "
|
583
601
|
begin
|
584
602
|
@@db.execute(statement) #if statement.to_s.strip.size > 0
|
585
603
|
tlogger.done
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blackstack-deployer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leandro Daniel Sardi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: blackstack-nodes
|