mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-30 07:26:56 +00:00
fix: correctly update partition key indices during alter table operations (#6494)
* fix: correctly update partition key indices in alter table operations Signed-off-by: WenyXu <wenymedia@gmail.com> * test: add sqlness tests Signed-off-by: WenyXu <wenymedia@gmail.com> --------- Signed-off-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
@@ -174,3 +174,80 @@ DROP TABLE t;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
CREATE TABLE my_table (
|
||||
a INT PRIMARY KEY,
|
||||
b STRING,
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
)
|
||||
PARTITION ON COLUMNS (a) (
|
||||
a < 1000,
|
||||
a >= 1000 AND a < 2000,
|
||||
a >= 2000
|
||||
);
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
INSERT INTO my_table VALUES
|
||||
(100, 'a', 1),
|
||||
(200, 'b', 2),
|
||||
(1100, 'c', 3),
|
||||
(1200, 'd', 4),
|
||||
(2000, 'e', 5),
|
||||
(2100, 'f', 6),
|
||||
(2200, 'g', 7),
|
||||
(2400, 'h', 8);
|
||||
|
||||
Affected Rows: 8
|
||||
|
||||
SELECT * FROM my_table WHERE a > 100 order by a;
|
||||
|
||||
+------+---+-------------------------+
|
||||
| a | b | ts |
|
||||
+------+---+-------------------------+
|
||||
| 200 | b | 1970-01-01T00:00:00.002 |
|
||||
| 1100 | c | 1970-01-01T00:00:00.003 |
|
||||
| 1200 | d | 1970-01-01T00:00:00.004 |
|
||||
| 2000 | e | 1970-01-01T00:00:00.005 |
|
||||
| 2100 | f | 1970-01-01T00:00:00.006 |
|
||||
| 2200 | g | 1970-01-01T00:00:00.007 |
|
||||
| 2400 | h | 1970-01-01T00:00:00.008 |
|
||||
+------+---+-------------------------+
|
||||
|
||||
SELECT count(*) FROM my_table WHERE a > 100;
|
||||
|
||||
+----------+
|
||||
| count(*) |
|
||||
+----------+
|
||||
| 7 |
|
||||
+----------+
|
||||
|
||||
ALTER TABLE my_table ADD COLUMN c STRING FIRST;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
SELECT * FROM my_table WHERE a > 100 order by a;
|
||||
|
||||
+---+------+---+-------------------------+
|
||||
| c | a | b | ts |
|
||||
+---+------+---+-------------------------+
|
||||
| | 200 | b | 1970-01-01T00:00:00.002 |
|
||||
| | 1100 | c | 1970-01-01T00:00:00.003 |
|
||||
| | 1200 | d | 1970-01-01T00:00:00.004 |
|
||||
| | 2000 | e | 1970-01-01T00:00:00.005 |
|
||||
| | 2100 | f | 1970-01-01T00:00:00.006 |
|
||||
| | 2200 | g | 1970-01-01T00:00:00.007 |
|
||||
| | 2400 | h | 1970-01-01T00:00:00.008 |
|
||||
+---+------+---+-------------------------+
|
||||
|
||||
SELECT count(*) FROM my_table WHERE a > 100;
|
||||
|
||||
+----------+
|
||||
| count(*) |
|
||||
+----------+
|
||||
| 7 |
|
||||
+----------+
|
||||
|
||||
DROP TABLE my_table;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
|
||||
@@ -47,3 +47,36 @@ SELECT * FROM t;
|
||||
ALTER TABLE t ADD COLUMN x int xxx;
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
CREATE TABLE my_table (
|
||||
a INT PRIMARY KEY,
|
||||
b STRING,
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
)
|
||||
PARTITION ON COLUMNS (a) (
|
||||
a < 1000,
|
||||
a >= 1000 AND a < 2000,
|
||||
a >= 2000
|
||||
);
|
||||
|
||||
INSERT INTO my_table VALUES
|
||||
(100, 'a', 1),
|
||||
(200, 'b', 2),
|
||||
(1100, 'c', 3),
|
||||
(1200, 'd', 4),
|
||||
(2000, 'e', 5),
|
||||
(2100, 'f', 6),
|
||||
(2200, 'g', 7),
|
||||
(2400, 'h', 8);
|
||||
|
||||
SELECT * FROM my_table WHERE a > 100 order by a;
|
||||
|
||||
SELECT count(*) FROM my_table WHERE a > 100;
|
||||
|
||||
ALTER TABLE my_table ADD COLUMN c STRING FIRST;
|
||||
|
||||
SELECT * FROM my_table WHERE a > 100 order by a;
|
||||
|
||||
SELECT count(*) FROM my_table WHERE a > 100;
|
||||
|
||||
DROP TABLE my_table;
|
||||
|
||||
@@ -31,3 +31,24 @@ DROP TABLE test;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
CREATE TABLE my_table (
|
||||
a INT PRIMARY KEY,
|
||||
b STRING,
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
)
|
||||
PARTITION ON COLUMNS (a) (
|
||||
a < 1000,
|
||||
a >= 1000 AND a < 2000,
|
||||
a >= 2000
|
||||
);
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
ALTER TABLE my_table DROP COLUMN a;
|
||||
|
||||
Error: 1004(InvalidArguments), Not allowed to remove index column a from table my_table
|
||||
|
||||
DROP TABLE my_table;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
|
||||
@@ -11,3 +11,18 @@ SELECT * FROM test;
|
||||
ALTER TABLE test DROP COLUMN j;
|
||||
|
||||
DROP TABLE test;
|
||||
|
||||
CREATE TABLE my_table (
|
||||
a INT PRIMARY KEY,
|
||||
b STRING,
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
)
|
||||
PARTITION ON COLUMNS (a) (
|
||||
a < 1000,
|
||||
a >= 1000 AND a < 2000,
|
||||
a >= 2000
|
||||
);
|
||||
|
||||
ALTER TABLE my_table DROP COLUMN a;
|
||||
|
||||
DROP TABLE my_table;
|
||||
|
||||
Reference in New Issue
Block a user