Skip to content

Commit 88c5cfa

Browse files
authored
Fix schema dumping for hypertables partitioned with integer chunk time interval (#67)
1 parent f1ac73b commit 88c5cfa

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

lib/timescaledb/migration_helpers.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def create_hypertable(table_name,
4949
original_logger = ActiveRecord::Base.logger
5050
ActiveRecord::Base.logger = Logger.new(STDOUT)
5151

52-
options = ["chunk_time_interval => INTERVAL '#{chunk_time_interval}'"]
52+
options = ["chunk_time_interval => #{chunk_time_interval_clause(chunk_time_interval)}"]
5353
options += hypertable_options.map { |k, v| "#{k} => #{quote(v)}" }
5454

5555
arguments = [
@@ -165,6 +165,14 @@ def build_with_clause_option_string(option_key, options)
165165
value = options[option_key] ? 'true' : 'false'
166166
",timescaledb.#{option_key}=#{value}"
167167
end
168+
169+
def chunk_time_interval_clause(chunk_time_interval)
170+
if chunk_time_interval.is_a?(Numeric)
171+
chunk_time_interval
172+
else
173+
"INTERVAL '#{chunk_time_interval}'"
174+
end
175+
end
168176
end
169177
end
170178

lib/timescaledb/schema_dumper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def timescale_hypertable(hypertable, stream)
7878

7979
options = {
8080
time_column: time.column_name,
81-
chunk_time_interval: time.time_interval.inspect,
81+
chunk_time_interval: time.time_interval ? time.time_interval.inspect : time.integer_interval,
8282
**timescale_compression_settings_for(hypertable),
8383
**timescale_space_partition_for(hypertable),
8484
**timescale_index_options_for(hypertable)

spec/support/active_record/schema.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ def setup_tables
3939
options: { time_column: 'timestamp' }
4040
)
4141

42+
create_table(:hypertable_with_id_partitioning, hypertable: {
43+
time_column: 'id',
44+
chunk_time_interval: 1_000_000
45+
})
46+
4247
create_table(:non_hypertables) do |t|
4348
t.string :name
4449
end

spec/timescaledb/schema_dumper_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@
123123
expect(dump).to include "create_default_indexes: false"
124124
end
125125

126+
it "extracts integer chunk_time_interval" do
127+
options = { time_column: :id, chunk_time_interval: 10000 }
128+
con.create_table :schema_tests, hypertable: options do |t|
129+
t.timestamps
130+
end
131+
132+
dump = dump_output
133+
134+
expect(dump).to include "chunk_time_interval: 10000"
135+
end
136+
126137
context "compress_segmentby" do
127138
before(:each) do
128139
con.drop_table :segmentby_tests, force: :cascade if con.table_exists?(:segmentby_tests)

0 commit comments

Comments
 (0)