[ https://issues.apache.org/jira/browse/PHOENIX-1096?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17749496#comment-17749496 ]
ASF GitHub Bot commented on PHOENIX-1096: ----------------------------------------- stoty commented on PR #4: URL: https://github.com/apache/phoenix/pull/4#issuecomment-1659688151 This has been merged a long time ago. > Duplicate sequence values returned when doing upsert select against a salted > table. > ----------------------------------------------------------------------------------- > > Key: PHOENIX-1096 > URL: https://issues.apache.org/jira/browse/PHOENIX-1096 > Project: Phoenix > Issue Type: Bug > Affects Versions: 3.0.0, 4.0.0 > Reporter: Samarth Jain > Assignee: Jan Fernando > Priority: Major > Fix For: 3.1.0, 4.1.0 > > Attachments: PHOENIX-1096.patch > > > {code} > @Test > public void testUpsertSelectWithSequenceAndLargeDataSet() throws > Exception { > long ts = nextTimestamp(); > Properties props = new Properties(); > //props.setProperty(QueryServices.THREAD_POOL_SIZE_ATTRIB, > Integer.toString(64)); > props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, > Long.toString(ts)); > Connection conn = DriverManager.getConnection(getUrl(), props); > String ddl = "CREATE TABLE IF NOT EXISTS DUMMY_CURSOR_STORAGE (" > + "ORGANIZATION_ID CHAR(15) NOT NULL, QUERY_ID CHAR(15) NOT NULL, > CURSOR_ORDER BIGINT NOT NULL " > + "CONSTRAINT MAIN_PK PRIMARY KEY (ORGANIZATION_ID, QUERY_ID, > CURSOR_ORDER) " > + ") SALT_BUCKETS = 64"; > conn.createStatement().execute(ddl); > conn.createStatement().execute("CREATE TABLE DUMMY_SEQ_TEST_DATA > (ORGANIZATION_ID CHAR(15) NOT NULL, k1 integer not null, v1 integer not null > CONSTRAINT PK PRIMARY KEY (ORGANIZATION_ID, k1, v1) ) VERSIONS=1, > SALT_BUCKETS=64"); > conn.createStatement().execute("create sequence s cache " + > Long.MAX_VALUE); > conn.close(); > props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts > + 10)); > conn = DriverManager.getConnection(getUrl(), props); > for (int i = 0; i < 500000; i++) { > conn.createStatement().execute("upsert into DUMMY_SEQ_TEST_DATA > values ('00Dxx0000001gEH'," + i + "," + i + ")"); > } > conn.commit(); > props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts > + 15)); > conn = DriverManager.getConnection(getUrl(), props); > conn.setAutoCommit(true); > conn.createStatement().execute("upsert into DUMMY_CURSOR_STORAGE > select ORGANIZATION_ID, 'MyQueryId', next value for s FROM > DUMMY_SEQ_TEST_DATA"); > //conn.commit(); > props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts > + 20)); > conn = DriverManager.getConnection(getUrl(), props); > ResultSet rs = conn.createStatement().executeQuery("select count(*) > from DUMMY_CURSOR_STORAGE"); > > assertTrue(rs.next()); > assertEquals(500000, rs.getLong(1)); > conn.close(); > props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts > + 25)); > ResultSet rs2 = conn.createStatement().executeQuery("select > cursor_order from DUMMY_CURSOR_STORAGE"); > long seq = 1; > while (rs2.next()) { > assertEquals(seq, rs2.getLong(1)); > seq++; > } > conn.close(); > > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)