Skip to content

Commit af39b1a

Browse files
sevevmergify[bot]
authored andcommitted
[BugFix] Deletion task failed when using datetime as a deletion predicate (#58933)
Signed-off-by: sevev <[email protected]> (cherry picked from commit ff9d27f)
1 parent d735f38 commit af39b1a

File tree

4 files changed

+62
-1
lines changed

4 files changed

+62
-1
lines changed

be/src/storage/utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ bool valid_decimal(const string& value_str, uint32_t precision, uint32_t frac) {
323323
bool valid_datetime(const string& value_str) {
324324
const char* datetime_pattern =
325325
"((?:\\d){4})-((?:\\d){2})-((?:\\d){2})[ ]*"
326-
"(((?:\\d){2}):((?:\\d){2}):((?:\\d){2}))?";
326+
"(((?:\\d){2}):((?:\\d){2}):((?:\\d){2})(\\.(\\d{1,6}))?)?";
327327
boost::regex e(datetime_pattern);
328328
boost::smatch what;
329329

be/test/storage/utils_test.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,13 @@ TEST_F(TestUtils, test_is_tracker_hit_hard_limit) {
5757
ASSERT_TRUE(!is_tracker_hit_hard_limit(tracker.get(), 4));
5858
}
5959

60+
TEST_F(TestUtils, test_valid_datetime) {
61+
ASSERT_TRUE(valid_datetime("2020-01-01 00:00:00"));
62+
ASSERT_TRUE(valid_datetime("2020-01-01 00:00:00.0"));
63+
ASSERT_TRUE(valid_datetime("2020-01-01 00:00:00.01"));
64+
ASSERT_TRUE(valid_datetime("2020-01-01 00:00:00.012345"));
65+
ASSERT_TRUE(valid_datetime("2020-01-01 00:00:00.1230"));
66+
ASSERT_FALSE(valid_datetime("2020-01-01 00:00:00.0123456"));
67+
}
68+
6069
} // namespace starrocks

test/sql/test_datetime/R/test_datetime

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,44 @@ select * from test_datetime order by c1;
3939
11 2020-01-01 00:00:00.123400
4040
12 2020-01-01 00:00:00.123450
4141
13 2020-01-01 00:00:00.123450
42+
-- !result
43+
delete from test_datetime where c2 = '2020-01-01 00:00:00';
44+
-- result:
45+
-- !result
46+
delete from test_datetime where c2 = '2020-01-01 00:00:00.0';
47+
-- result:
48+
-- !result
49+
delete from test_datetime where c2 = '2020-01-01 00:00:00.012';
50+
-- result:
51+
-- !result
52+
select * from test_datetime order by c1;
53+
-- result:
54+
3 2020-01-01 00:00:00.010000
55+
5 2020-01-01 00:00:00.012300
56+
6 2020-01-01 00:00:00.012340
57+
7 2020-01-01 00:00:00.012345
58+
8 2020-01-01 00:00:00.100000
59+
9 2020-01-01 00:00:00.120000
60+
10 2020-01-01 00:00:00.123000
61+
11 2020-01-01 00:00:00.123400
62+
12 2020-01-01 00:00:00.123450
63+
13 2020-01-01 00:00:00.123450
64+
-- !result
65+
delete from test_datetime where c2 = '2020-01-01 00:00:00.1';
66+
-- result:
67+
-- !result
68+
delete from test_datetime where c2 = '2020-01-01 00:00:00.123';
69+
-- result:
70+
-- !result
71+
delete from test_datetime where c2 = '2020-01-01 00:00:00.123450';
72+
-- result:
73+
-- !result
74+
select * from test_datetime order by c1;
75+
-- result:
76+
3 2020-01-01 00:00:00.010000
77+
5 2020-01-01 00:00:00.012300
78+
6 2020-01-01 00:00:00.012340
79+
7 2020-01-01 00:00:00.012345
80+
9 2020-01-01 00:00:00.120000
81+
11 2020-01-01 00:00:00.123400
4282
-- !result

test/sql/test_datetime/T/test_datetime

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,16 @@ insert into test_datetime values
2222
(12, '2020-01-01 00:00:00.12345'),
2323
(13, '2020-01-01 00:00:00.123450');
2424

25+
select * from test_datetime order by c1;
26+
27+
delete from test_datetime where c2 = '2020-01-01 00:00:00';
28+
delete from test_datetime where c2 = '2020-01-01 00:00:00.0';
29+
delete from test_datetime where c2 = '2020-01-01 00:00:00.012';
30+
31+
select * from test_datetime order by c1;
32+
33+
delete from test_datetime where c2 = '2020-01-01 00:00:00.1';
34+
delete from test_datetime where c2 = '2020-01-01 00:00:00.123';
35+
delete from test_datetime where c2 = '2020-01-01 00:00:00.123450';
36+
2537
select * from test_datetime order by c1;

0 commit comments

Comments
 (0)