[ https://issues.apache.org/jira/browse/IGNITE-21296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan Gagarkin updated IGNITE-21296: ----------------------------------- Description: *Steps to Reproduce:* # Create a table using the command: {{{}CREATE TABLE TEST (id INT PRIMARY KEY, country VARCHAR){}}}. # Create a POJO with corresponding fields to the table. # Create a Key-Value (KV) view: {{{}KeyValueView<Integer, Country> countryValueView = table.keyValueView(Mapper.of(Integer.class), Mapper.of(Country.class));{}}}. # Insert some data into the table. # Alter the table by adding a new column: {{{}ALTER TABLE TEST ADD COLUMN city VARCHAR{}}}. # Create a new POJO to accommodate the added column. # Create a new KV view: {{{}KeyValueView<Integer, CountryCity> countryCityKeyValueView = CLUSTER.node(0).tables().table(TABLE_NAME).keyValueView(Mapper.of(Integer.class), Mapper.of(CountryCity.class));{}}}. # Attempt to remove data from the table using the first KV view: {{{}assertTrue(countryValueView.remove(null, 0, valuePojo));{}}}. This fails with the error "No mapped object field found for column 'CITY'". # Try to remove data using the second KV view: {{{}assertTrue(countryCityKeyValueView.remove(null, 0, new CountryCity(valuePojo.country(), null)));{}}}. This returns {{{}false{}}}. *Expected Behavior:* It should be possible to remove values using either of the KV views after altering the table structure. *Actual Behavior:* * Unable to remove values using the first KV view due to the lack of a 'city' column in the original POJO. * Unable to remove values using the second KV view as the {{equals}} method does not function as expected. was: *Steps to Reproduce:* # Create a table using the command: {{{}CREATE TABLE TEST (id INT PRIMARY KEY, country VARCHAR){}}}. # Create a POJO with corresponding fields to the table. # Create a Key-Value (KV) view: {{{}KeyValueView<Integer, Country> countryValueView = table.keyValueView(Mapper.of(Integer.class), Mapper.of(Country.class));{}}}. # Insert some data into the table. # Alter the table by adding a new column: {{{}ALTER TABLE TEST ADD COLUMN city VARCHAR{}}}. # Create a new POJO to accommodate the added column. # Create a new KV view: {{{}KeyValueView<Integer, CountryCity> countryCityKeyValueView = CLUSTER.node(0).tables().table(TABLE_NAME).keyValueView(Mapper.of(Integer.class), Mapper.of(CountryCity.class));{}}}. # Attempt to remove data from the table using the first KV view: {{{}assertTrue(countryValueView.remove(null, 0, valuePojo));{}}}. This fails with the error "No mapped object field found for column 'CITY'". # Try to remove data using the second KV view: {{{}assertTrue(countryCityKeyValueView.remove(null, 0, new CountryCity(valuePojo.country(), null)));{}}}. This returns {{{}false{}}}. *Expected Behavior:* ** It should be possible to remove values using either of the KV views after altering the table structure. *Actual Behavior:* ** Unable to remove values using the first KV view due to the lack of a 'city' column in the original POJO. ** Unable to remove values using the second KV view as the {{equals}} method does not function as expected. > Altering the table causes the KV API to break > --------------------------------------------- > > Key: IGNITE-21296 > URL: https://issues.apache.org/jira/browse/IGNITE-21296 > Project: Ignite > Issue Type: Bug > Reporter: Ivan Gagarkin > Priority: Critical > Labels: ignite-3 > Attachments: alterTableTest1.java > > > > *Steps to Reproduce:* > # Create a table using the command: {{{}CREATE TABLE TEST (id INT PRIMARY > KEY, country VARCHAR){}}}. > # Create a POJO with corresponding fields to the table. > # Create a Key-Value (KV) view: {{{}KeyValueView<Integer, Country> > countryValueView = table.keyValueView(Mapper.of(Integer.class), > Mapper.of(Country.class));{}}}. > # Insert some data into the table. > # Alter the table by adding a new column: {{{}ALTER TABLE TEST ADD COLUMN > city VARCHAR{}}}. > # Create a new POJO to accommodate the added column. > # Create a new KV view: {{{}KeyValueView<Integer, CountryCity> > countryCityKeyValueView = > CLUSTER.node(0).tables().table(TABLE_NAME).keyValueView(Mapper.of(Integer.class), > Mapper.of(CountryCity.class));{}}}. > # Attempt to remove data from the table using the first KV view: > {{{}assertTrue(countryValueView.remove(null, 0, valuePojo));{}}}. This fails > with the error "No mapped object field found for column 'CITY'". > # Try to remove data using the second KV view: > {{{}assertTrue(countryCityKeyValueView.remove(null, 0, new > CountryCity(valuePojo.country(), null)));{}}}. This returns {{{}false{}}}. > *Expected Behavior:* > It should be possible to remove values using either of the KV views after > altering the table structure. > *Actual Behavior:* > * Unable to remove values using the first KV view due to the lack of a > 'city' column in the original POJO. > * Unable to remove values using the second KV view as the {{equals}} method > does not function as expected. -- This message was sent by Atlassian Jira (v8.20.10#820010)