[ https://issues.apache.org/jira/browse/PHOENIX-3454?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James Taylor updated PHOENIX-3454: ---------------------------------- Fix Version/s: (was: 4.14.0) 4.13.0 > ON DUPLICATE KEY construct doesn't work correctly when using lower case > column names > ------------------------------------------------------------------------------------ > > Key: PHOENIX-3454 > URL: https://issues.apache.org/jira/browse/PHOENIX-3454 > Project: Phoenix > Issue Type: Bug > Reporter: Samarth Jain > Assignee: James Taylor > Priority: Major > Fix For: 4.13.0 > > Attachments: PHOENIX-3454.patch, Screen Shot 2016-11-04 at 1.29.43 > PM.png > > > See this test case for a repro: > {code} > @Test > public void testDeleteOnSingleLowerCaseVarcharColumn() throws Exception { > Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); > Connection conn = DriverManager.getConnection(getUrl(), props); > conn.setAutoCommit(false); > String tableName = generateUniqueName(); > String ddl = " create table " + tableName + "(pk varchar primary key, > \"counter1\" varchar, \"counter2\" smallint)"; > conn.createStatement().execute(ddl); > String dml = "UPSERT INTO " + tableName + " VALUES('a','b') ON > DUPLICATE KEY UPDATE \"counter1\" = null"; > conn.createStatement().execute(dml); > conn.createStatement().execute(dml); > conn.commit(); > ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM " + > tableName); > assertTrue(rs.next()); > assertEquals("a",rs.getString(1)); > assertEquals(null,rs.getString(2)); > assertFalse(rs.next()); > > dml = "UPSERT INTO " + tableName + " VALUES('a','b',0)"; > conn.createStatement().execute(dml); > dml = "UPSERT INTO " + tableName + " VALUES('a','b', 0) ON DUPLICATE > KEY UPDATE \"counter1\" = null, \"counter2\" = \"counter2\" + 1"; > conn.createStatement().execute(dml); > dml = "UPSERT INTO " + tableName + " VALUES('a','b', 0) ON DUPLICATE > KEY UPDATE \"counter1\" = 'c', \"counter2\" = \"counter2\" + 1"; > conn.createStatement().execute(dml); > conn.commit(); > rs = conn.createStatement().executeQuery("SELECT * FROM " + > tableName); > assertTrue(rs.next()); > assertEquals("a",rs.getString(1)); > assertEquals("c",rs.getString(2)); > assertEquals(2,rs.getInt(3)); > assertFalse(rs.next()); > conn.close(); > } > {code} > After changing the column names to upper case (or removing the quotes), the > test passes. > FYI, [~jamestaylor] -- This message was sent by Atlassian JIRA (v7.6.3#76005)