[ 
https://issues.apache.org/jira/browse/PHOENIX-1096?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14066921#comment-14066921
 ] 

Hudson commented on PHOENIX-1096:
---------------------------------

ABORTED: Integrated in Phoenix | 3.0 | Hadoop1 #139 (See 
[https://builds.apache.org/job/Phoenix-3.0-hadoop1/139/])
PHOENIX-1096 Duplicate sequence values returned when doing upsert select 
against a salted table (Jan Fernando) (jtaylor: rev 
8ef99cef7a696bad5590f969aa8757a9ac05e1e3)
* phoenix-core/src/main/java/org/apache/phoenix/compile/SequenceManager.java
* phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectIT.java


> 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
>             Fix For: 5.0.0, 3.1, 4.1
>
>         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
(v6.2#6252)

Reply via email to