Skip to content

Commit f6e009d

Browse files
committed
fix
1 parent e4037d4 commit f6e009d

3 files changed

Lines changed: 31 additions & 12 deletions

File tree

lib/umbrellio_utils/click_house.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,12 @@ def pg_table_connection(table)
104104
def with_temp_table(
105105
dataset, temp_table_name:, primary_key: [:id], primary_key_types: [:integer], **opts, &
106106
)
107-
UmbrellioUtils::Database.create_temp_table(
108-
nil, primary_key:, primary_key_types:, temp_table_name:, &
109-
)
110-
populate_temp_table!(temp_table_name, dataset)
107+
unless DB.table_exists?(temp_table_name)
108+
UmbrellioUtils::Database.create_temp_table(
109+
nil, primary_key:, primary_key_types:, temp_table_name:, &
110+
)
111+
populate_temp_table!(temp_table_name, dataset)
112+
end
111113
UmbrellioUtils::Database.with_temp_table(nil, primary_key:, temp_table_name:, **opts, &)
112114
end
113115

spec/support/database.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
db_name = "umbrellio_utils_test"
77
DB = Sequel.postgres(
88
"umbrellio_utils_test",
9-
user: "user",
10-
password: "pass",
9+
user: "igor",
10+
password: "password",
1111
host: "localhost",
1212
port: 5432,
1313
)

spec/umbrellio_utils/clickhouse_spec.rb

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,30 @@
8383
end
8484

8585
describe "#with_temp_table" do
86-
specify do
87-
result = []
88-
dataset = ch.from(:test).order(:id)
89-
ch.with_temp_table(dataset, temp_table_name: "some_test_table", page_size: 1) do |batch|
90-
result << batch
86+
let(:result) { [] }
87+
let(:dataset) { ch.from(:test).order(:id) }
88+
89+
context "when no temp table" do
90+
before { DB.drop_table?(:some_test_table) }
91+
92+
specify do
93+
ch.with_temp_table(dataset, temp_table_name: "some_test_table", page_size: 1) do |batch|
94+
result << batch
95+
end
96+
expect(result).to eq([[3], [2], [1]])
97+
end
98+
end
99+
100+
context "when table already exist" do
101+
before { DB.create_table("some_test_table") { primary_key :id } }
102+
before { DB[:some_test_table].multi_insert([{ id: 4 }, { id: 5 }, { id: 6 }]) }
103+
104+
it "takes from existing" do
105+
ch.with_temp_table(dataset, temp_table_name: "some_test_table", page_size: 1) do |batch|
106+
result << batch
107+
end
108+
expect(result).to eq([[6], [5], [4]])
91109
end
92-
expect(result).to eq([[3], [2], [1]])
93110
end
94111
end
95112

0 commit comments

Comments
 (0)