[ https://issues.apache.org/jira/browse/PHOENIX-4504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16304728#comment-16304728 ]
Sokolov Yura commented on PHOENIX-4504: --------------------------------------- Query results: {code} 0: jdbc:phoenix:localhost:2181:/hbase> select id, ts from product_history_v3 where merchantid = '1479114284851799852-2-11-118-1577502676' and ts < 1499472000000 and ts > 1498867200000 order by id, ts limit 30; +-------------------------------------------+----------------+ | ID | TS | +-------------------------------------------+----------------+ | 1464229783114162363-3-1-553-2857867552 | 1498936510676 | | 1464229783114162363-3-1-553-2857867552 | 1498980130157 | | 1464229783114162363-3-1-553-2857867552 | 1499047781507 | | 1464229783114162363-3-1-553-2857867552 | 1499180409615 | | 1464247850112432488-236-1-553-2644393506 | 1498915623062 | | 1464247850112432488-236-1-553-2644393506 | 1498971253149 | | 1464247850112432488-236-1-553-2644393506 | 1499048440459 | | 1464247850112432488-236-1-553-2644393506 | 1499158314215 | | 1464247850112432488-236-1-553-2644393506 | 1499259823270 | | 1464247852027309711-255-1-553-3238414857 | 1498934879322 | | 1464247852027309711-255-1-553-3238414857 | 1498979086034 | | 1464247852027309711-255-1-553-3238414857 | 1499048440538 | | 1464247852027309711-255-1-553-3238414857 | 1499179134343 | | 1464247868867164868-81-1-553-620607591 | 1498877737342 | | 1464247868867164868-81-1-553-620607591 | 1498961698314 | | 1464247868867164868-81-1-553-620607591 | 1499048440623 | | 1464247868867164868-81-1-553-620607591 | 1499134677065 | | 1464247868867164868-81-1-553-620607591 | 1499223466036 | | 1464247873075803152-102-1-553-831204716 | 1498917114334 | | 1464247873075803152-102-1-553-831204716 | 1498971840572 | | 1464247873075803152-102-1-553-831204716 | 1499048440705 | | 1464247873075803152-102-1-553-831204716 | 1499159759145 | | 1464247873075803152-102-1-553-831204716 | 1499261515858 | | 1464247873268431014-104-1-553-1667649981 | 1498920527056 | | 1464247873268431014-104-1-553-1667649981 | 1498972582415 | | 1464247873268431014-104-1-553-1667649981 | 1499048440784 | | 1464247873268431014-104-1-553-1667649981 | 1499107657865 | | 1464247873268431014-104-1-553-1667649981 | 1499132841653 | | 1464247873268431014-104-1-553-1667649981 | 1499139107062 | | 1464247873268431014-104-1-553-1667649981 | 1499163196961 | +-------------------------------------------+----------------+ 30 rows selected (0,274 seconds) {code} {code} 0: jdbc:phoenix:localhost:2181:/hbase> select id, ts from product_history_v3 where (id, ts) in (select id, ts from product_history_v3 where merchantid = '1479114284851799852-2-11-118-1577502676' and ts < 1499472000000 and ts > 1498867200000 order by id, ts limit 30) order by id, ts limit 30; +---------------------------------------------+----------------+ | ID | TS | +---------------------------------------------+----------------+ | 1464337455925822715-9-1-553-1737427551 | 1498867467198 | | 1464342306748747866-224-1-553-2477984196 | 1498867741603 | | 1464344584747196409-109-1-553-3617551231 | 1498867520459 | | 1464354915226445545-12-1-553-3326867460 | 1498867329716 | | 1464354951171259893-205-1-553-157712144 | 1498867937367 | | 1465807522931047248-254-1-26341-3040374238 | 1498868565649 | | 1465807593822096005-148-1-26341-2315313399 | 1498868335480 | | 1465969384474095425-222-1-582-3798093076 | 1498868492803 | | 1465970904962947474-201-1-582-2549082058 | 1498867460112 | | 1465973068310049179-126-1-582-2560628236 | 1498867756532 | | 1465976833000334290-144-1-26341-3964894838 | 1498869392946 | | 1465980370698420387-241-1-26341-2279175928 | 1498867965885 | | 1465980570230565465-153-1-582-1882378697 | 1498868981412 | | 1465981770283025085-1-1-582-2291683338 | 1498869557486 | | 1466076354192621871-148-1-582-3639476582 | 1498869573669 | | 1466247928637235332-189-1-26341-29981431 | 1498869562923 | | 1466343753985642490-1-1-582-3786071318 | 1498869288741 | | 1466510716584116158-92-1-26341-3274171161 | 1498869578179 | | 1466516750800325950-185-1-26341-3458616731 | 1498869582376 | | 1466601802728707669-241-1-26341-3251933984 | 1498869592565 | | 1466601895261888572-226-1-26341-1997428701 | 1498869598320 | | 1469086675558023209-103-1-26341-2051254469 | 1498869409408 | | 1470471122450741988-251-1-26341-3428426480 | 1498868080181 | | 1473755155974969573-84-1-26312-936070239 | 1498869371107 | | 1474977282760354022-97-1-582-3584026058 | 1498869323363 | | 1476515701269758184-93-1-26341-2090804045 | 1498868961391 | | 1479381860049720395-36-1-629-1697505625 | 1498868108260 | | 1479800887135410698-115-1-582-3133031776 | 1498867326627 | | 1480820701323905492-186-1-629-554270586 | 1498867888693 | | 1482475116359338911-164-1-26341-583821995 | 1498867459225 | +---------------------------------------------+----------------+ 30 rows selected (2,693 seconds) {code} {code} 0: jdbc:phoenix:localhost:2181:/hbase> select id, ts from product_history_v3 where (id, ts) in (select id, ts from product_history_v3 where merchantid = '1479114284851799852-2-11-118-1577502676' and ts < 1499472000000 and ts > 1498867200000 order by id||'-', ts limit 30) order by id, ts limit 30; +-------------------------------------------+----------------+ | ID | TS | +-------------------------------------------+----------------+ | 1464229783114162363-3-1-553-2857867552 | 1498936510676 | | 1464229783114162363-3-1-553-2857867552 | 1498980130157 | | 1464229783114162363-3-1-553-2857867552 | 1499047781507 | | 1464229783114162363-3-1-553-2857867552 | 1499180409615 | | 1464247850112432488-236-1-553-2644393506 | 1498915623062 | | 1464247850112432488-236-1-553-2644393506 | 1498971253149 | | 1464247850112432488-236-1-553-2644393506 | 1499048440459 | | 1464247850112432488-236-1-553-2644393506 | 1499158314215 | | 1464247850112432488-236-1-553-2644393506 | 1499259823270 | | 1464247852027309711-255-1-553-3238414857 | 1498934879322 | | 1464247852027309711-255-1-553-3238414857 | 1498979086034 | | 1464247852027309711-255-1-553-3238414857 | 1499048440538 | | 1464247852027309711-255-1-553-3238414857 | 1499179134343 | | 1464247868867164868-81-1-553-620607591 | 1498877737342 | | 1464247868867164868-81-1-553-620607591 | 1498961698314 | | 1464247868867164868-81-1-553-620607591 | 1499048440623 | | 1464247868867164868-81-1-553-620607591 | 1499134677065 | | 1464247868867164868-81-1-553-620607591 | 1499223466036 | | 1464247873075803152-102-1-553-831204716 | 1498917114334 | | 1464247873075803152-102-1-553-831204716 | 1498971840572 | | 1464247873075803152-102-1-553-831204716 | 1499048440705 | | 1464247873075803152-102-1-553-831204716 | 1499159759145 | | 1464247873075803152-102-1-553-831204716 | 1499261515858 | | 1464247873268431014-104-1-553-1667649981 | 1498920527056 | | 1464247873268431014-104-1-553-1667649981 | 1498972582415 | | 1464247873268431014-104-1-553-1667649981 | 1499048440784 | | 1464247873268431014-104-1-553-1667649981 | 1499107657865 | | 1464247873268431014-104-1-553-1667649981 | 1499132841653 | | 1464247873268431014-104-1-553-1667649981 | 1499139107062 | | 1464247873268431014-104-1-553-1667649981 | 1499163196961 | +-------------------------------------------+----------------+ 30 rows selected (1,364 seconds) {code} > Subquery with ORDER BY on salted table gives wrong results > ---------------------------------------------------------- > > Key: PHOENIX-4504 > URL: https://issues.apache.org/jira/browse/PHOENIX-4504 > Project: Phoenix > Issue Type: Bug > Affects Versions: 4.11.0 > Environment: amazon emr phoenix 4.11.0 hbase 1.3 > Reporter: Sokolov Yura > > Probably it is already fixed. Having a quick search I didn't find exact > problem description. > I have a table: > {code:sql} > create immutable table product_history_v3 ( > ts bigint not null, > id varchar not null, > product varchar, > merchantid varchar, > storeid varchar, > constraint pk primary key (ts, id) > ) compression=LZ4,max_filesize=150000000,memstore_flushsize=70000000, > versions=1,update_cache_frequency=1000,append_only_schema=true, > guid_posts_width=10000000, > SALT_BUCKETS=20; > create local index product_history_v3_id_ts on product_history_v3 (id, ts) > compression=LZ4; > create local index product_history_v3_merchantid_ts on product_history_v3 > (merchantid, ts) include (id) compression=LZ4; > create local index product_history_v3_storeid_ts on product_history_v3 > (storeid, ts) include (id) compression=LZ4; > {code} > Simple select by merchanid ordering by id,ts returns correct results: > {code:sql} > 0: jdbc:phoenix:localhost:2181:/hbase> explain select id, ts from > product_history_v3 where merchantid = > '1479114284851799852-2-11-118-1577502676' and ts < 1499472000000 and ts > > 1498867200000 order by id, ts limit 30; > +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > | > PLAN > | > +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > | CLIENT 20-CHUNK 0 ROWS 0 BYTES PARALLEL 20-WAY RANGE SCAN OVER > PRODUCT_HISTORY_V3 > [2,'1479114284851799852-2-11-118-1577502676',1498867200001] - > [2,'1479114284851799852-2-11-118-1577502676',1499472000000] | > | SERVER FILTER BY FIRST KEY ONLY > > | > | SERVER TOP 30 ROWS SORTED BY ["ID", "TS"] > > | > | CLIENT MERGE SORT > > | > | CLIENT LIMIT 30 > > | > +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > 5 rows selected (0,019 seconds) > {code} > It runs very fast until I add {{product}} to selected fields (cause average > length of {{product}} is 10kb). > So I'm trying to fetch id,ts in subquery, and product in outer query. It runs > fast, but returns incorrect results: set of rows doesn't match to set of rows > returned by query above. > {code} > 0: jdbc:phoenix:localhost:2181:/hbase> explain select id, ts, > substr(product,1,30) from product_history_v3 where (id, ts) in (select id, ts > from product_history_v3 where merchantid = > '1479114284851799852-2-11-118-1577502676' and ts < 1499472000000 and ts > > 1498867200000 order by id, ts limit 30) order by id, ts limit 30; > +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > | > PLAN > | > +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > | CLIENT 40-CHUNK 915204 ROWS 6291521905 BYTES PARALLEL 40-WAY FULL SCAN OVER > PRODUCT_HISTORY_V3 > | SERVER TOP 30 ROWS SORTED BY [PRODUCT_HISTORY_V3.ID, > PRODUCT_HISTORY_V3.TS] > | CLIENT MERGE SORT > | CLIENT LIMIT 30 > | SKIP-SCAN-JOIN TABLE 0 > | CLIENT 20-CHUNK 0 ROWS 0 BYTES PARALLEL 20-WAY RANGE SCAN OVER > PRODUCT_HISTORY_V3 > [2,'1479114284851799852-2-11-118-1577502676',1498867200001] - > [2,'1479114284851799852-2-11-118-1577502676',1499472000000] > | SERVER FILTER BY FIRST KEY ONLY > | SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY ["ID", "TS"] > LIMIT 30 GROUPS > | CLIENT MERGE SORT > | CLIENT 30 ROW LIMIT > | DYNAMIC SERVER FILTER BY (PRODUCT_HISTORY_V3.TS, PRODUCT_HISTORY_V3.ID) > IN (($470.$473, $470.$472)) > +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > 11 rows selected (0,021 seconds) > {code} > However, if I change ordering a bit, so planner is forced for reordering, > then set of rows is equal to original query: > {code} > 0: jdbc:phoenix:localhost:2181:/hbase> explain select id, ts, > substr(product,1,30) from product_history_v3 where (id, ts) in (select id, ts > from product_history_v3 where merchantid = > '1479114284851799852-2-11-118-1577502676' and ts < 1499472000000 and ts > > 1498867200000 order by id||'-', ts limit 30) order by id, ts limit 30; > +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > | > PLAN > +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ > | CLIENT 40-CHUNK 915204 ROWS 6291521905 BYTES PARALLEL 40-WAY FULL SCAN OVER > PRODUCT_HISTORY_V3 > | SERVER TOP 30 ROWS SORTED BY [PRODUCT_HISTORY_V3.ID, > PRODUCT_HISTORY_V3.TS] > | CLIENT MERGE SORT > | CLIENT LIMIT 30 > | SKIP-SCAN-JOIN TABLE 0 > | CLIENT 20-CHUNK 0 ROWS 0 BYTES PARALLEL 20-WAY RANGE SCAN OVER > PRODUCT_HISTORY_V3 > [2,'1479114284851799852-2-11-118-1577502676',1498867200001] - > [2,'1479114284851799852-2-11-118-1577502676',1499472000000] > | SERVER FILTER BY FIRST KEY ONLY > | SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY ["ID", "TS"] > | CLIENT MERGE SORT > | CLIENT TOP 30 ROWS SORTED BY [("ID" || '-'), "TS"] > | DYNAMIC SERVER FILTER BY (PRODUCT_HISTORY_V3.TS, PRODUCT_HISTORY_V3.ID) > IN (($494.$497, $494.$496)) > +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+ > 11 rows selected (0,02 seconds) > 12 rows selected (0,021 seconds) > {code} > There, certainly, should be a lot of rows to trigger this behaviour. -- This message was sent by Atlassian JIRA (v6.4.14#64029)