Skip to content

Commit 28e1c52

Browse files
committed
tabledesc: allow TTL storage params to be set to 0
Release note (bug fix): Fixed a bug that prevented the row-level TTL table storage parameters (e.g. ttl_select_batch_size, ttl_delete_batch_size, ttl_delete_rate_limit, and ttl_select_rate_limit) from being set to 0, which is their default value.
1 parent 44853b2 commit 28e1c52

File tree

3 files changed

+34
-19
lines changed

3 files changed

+34
-19
lines changed

pkg/sql/catalog/tabledesc/ttl.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,10 @@ func ValidateTTLExpirationColumn(desc catalog.TableDescriptor) error {
131131

132132
// ValidateTTLBatchSize validates the batch size of a TTL.
133133
func ValidateTTLBatchSize(key string, val int64) error {
134-
if val <= 0 {
134+
if val < 0 {
135135
return pgerror.Newf(
136136
pgcode.InvalidParameterValue,
137-
`"%s" must be at least 1`,
137+
`"%s" must be at least 0`,
138138
key,
139139
)
140140
}
@@ -157,10 +157,10 @@ func ValidateTTLCronExpr(key string, str string) error {
157157
// ValidateTTLRowStatsPollInterval validates the automatic statistics field
158158
// of TTL.
159159
func ValidateTTLRowStatsPollInterval(key string, val time.Duration) error {
160-
if val <= 0 {
160+
if val < 0 {
161161
return pgerror.Newf(
162162
pgcode.InvalidParameterValue,
163-
`"%s" must be at least 1`,
163+
`"%s" must be at least 0`,
164164
key,
165165
)
166166
}
@@ -169,10 +169,10 @@ func ValidateTTLRowStatsPollInterval(key string, val time.Duration) error {
169169

170170
// ValidateTTLRateLimit validates the rate limit parameters of TTL.
171171
func ValidateTTLRateLimit(key string, val int64) error {
172-
if val <= 0 {
172+
if val < 0 {
173173
return pgerror.Newf(
174174
pgcode.InvalidParameterValue,
175-
`"%s" must be at least 1`,
175+
`"%s" must be at least 0`,
176176
key,
177177
)
178178
}

pkg/sql/catalog/tabledesc/validate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2851,7 +2851,7 @@ func TestValidateTableDesc(t *testing.T) {
28512851
DurationExpr: catpb.Expression("INTERVAL '2 minutes'"),
28522852
},
28532853
}},
2854-
{err: `"ttl_select_batch_size" must be at least 1`,
2854+
{err: `"ttl_select_batch_size" must be at least 0`,
28552855
desc: descpb.TableDescriptor{
28562856
ID: 2,
28572857
ParentID: 1,

pkg/sql/logictest/testdata/logic_test/row_level_ttl

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -832,27 +832,42 @@ ALTER TABLE no_ttl_table SET (ttl_label_metrics = true)
832832

833833
subtest end
834834

835-
subtest ttl_params_positive
835+
subtest ttl_params_non_negative
836836

837837
statement ok
838-
CREATE TABLE tbl_ttl_params_positive (
838+
CREATE TABLE tbl_ttl_params_non_negative (
839839
id INT PRIMARY KEY
840840
) WITH (ttl_expire_after = '10 minutes')
841841

842-
statement error "ttl_select_batch_size" must be at least 1
843-
ALTER TABLE tbl_ttl_params_positive SET (ttl_select_batch_size = -1)
842+
statement error "ttl_select_batch_size" must be at least 0
843+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_select_batch_size = -1)
844844

845-
statement error "ttl_delete_batch_size" must be at least 1
846-
ALTER TABLE tbl_ttl_params_positive SET (ttl_delete_batch_size = -1)
845+
statement error "ttl_delete_batch_size" must be at least 0
846+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_delete_batch_size = -1)
847847

848-
statement error "ttl_select_rate_limit" must be at least 1
849-
ALTER TABLE tbl_ttl_params_positive SET (ttl_select_rate_limit = -1)
848+
statement error "ttl_select_rate_limit" must be at least 0
849+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_select_rate_limit = -1)
850850

851-
statement error "ttl_delete_rate_limit" must be at least 1
852-
ALTER TABLE tbl_ttl_params_positive SET (ttl_delete_rate_limit = -1)
851+
statement error "ttl_delete_rate_limit" must be at least 0
852+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_delete_rate_limit = -1)
853853

854-
statement error "ttl_row_stats_poll_interval" must be at least 1
855-
ALTER TABLE tbl_ttl_params_positive SET (ttl_row_stats_poll_interval = '-1 second')
854+
statement error "ttl_row_stats_poll_interval" must be at least 0
855+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_row_stats_poll_interval = '-1 second')
856+
857+
statement ok
858+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_select_batch_size = 0)
859+
860+
statement ok
861+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_delete_batch_size = 0)
862+
863+
statement ok
864+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_select_rate_limit = 0)
865+
866+
statement ok
867+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_delete_rate_limit = 0)
868+
869+
statement ok
870+
ALTER TABLE tbl_ttl_params_non_negative SET (ttl_row_stats_poll_interval = '0 second')
856871

857872
subtest end
858873

0 commit comments

Comments
 (0)