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