Vanja Pandzic created IGNITE-16200: -------------------------------------- Summary: Extending column size (varchar) via alter table does not persist after node / cluster restart Key: IGNITE-16200 URL: https://issues.apache.org/jira/browse/IGNITE-16200 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 2.11.1, 2.9.1, 2.10, 2.7.6 Environment: Centos 7.9
Ignite versions 2.7, 2.9 2.10, 2.11 Reporter: Vanja Pandzic When extending varchar column size via alter table drop column / alter table add column, the changes to column size do not persist after cluster restart, while added data does (in a supposedly undersized columns). Dropping the table and then recreating it via new DDL with extended varchar column works, and can be used as a workaround. Now, we've found the notice regarding a certain limitation when using alter table, specifically this: {code:java} The command does not remove actual data from the cluster which means that if the column 'name' is dropped, the value of the 'name' is still stored in the cluster. This limitation is to be addressed in the next releases. {code} but there is *no warning or failure* of any kind that one would expect from supposed collision with already stored data - such as when changing the column type, which produces "SQL Error [3009] [42000]: Column already exists: with a different type" Is this caused by the same issue / limitation? Either way, it can still cause a nasty surprise because of a lack of a warning / error of any kind, until the cluster is restarted. If it can't be fixed yet, can at least some kind of warning / error be added when attempting to change the column size? How to reproduce: {code:java} CREATE TABLE DEMO_TABLE ( id INT, contentious_column VARCHAR(8), PRIMARY KEY (id) ) WITH "CACHE_NAME=DEMO_TABLE, DATA_REGION=PersistDataRegion, TEMPLATE=REPLICATED, BACKUPS=1"; -- goes through, under 8 chars INSERT INTO DEMO_TABLE (id, contentious_column) VALUES(1, '1234'); INSERT INTO DEMO_TABLE (id, contentious_column) VALUES(2, '12345678'); -- fails, contentious_column value is too long INSERT INTO DEMO_TABLE (id, contentious_column) VALUES(3, '123456789101112131415'); SELECT contentious_column FROM PUBLIC.DEMO_TABLE; -- change column size from 8 to 30 ALTER TABLE PUBLIC.DEMO_TABLE DROP COLUMN contentious_column; ALTER TABLE PUBLIC.DEMO_TABLE ADD COLUMN (contentious_column varchar(30)); -- now the contentious_column is enlarged and can accept previously unacceptable value INSERT INTO DEMO_TABLE (id, contentious_column) VALUES(3, '123456789101112131415'); -- restart node / cluster via systemctl restart apache-ign...@ignite-config.xml -- after restart, value can still be accessed SELECT contentious_column FROM PUBLIC.DEMO_TABLE WHERE id=3; -- but you can't insert new values over length 8 - the column size has been shrunk back to its original value INSERT INTO DEMO_TABLE (id, contentious_column) VALUES(4, '123456789'); -- back to length 8, goes through INSERT INTO DEMO_TABLE (id, contentious_column) VALUES(4, '12345678'); {code} -- This message was sent by Atlassian Jira (v8.20.1#820001)