[ 
https://issues.apache.org/jira/browse/TRAFODION-2767?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Suresh Subbiah closed TRAFODION-2767.
-------------------------------------
    Resolution: Cannot Reproduce

> Select count(*) from a renamed table should return error 4082 instead of 
> error 8448
> -----------------------------------------------------------------------------------
>
>                 Key: TRAFODION-2767
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2767
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: sql-cmp
>    Affects Versions: 2.2-incubating
>            Reporter: Suresh Subbiah
>            Assignee: Suresh Subbiah
>             Fix For: 2.2-incubating
>
>
> Select count(*) from a table that has been renamed now returns a 8448 error 
> with a hbase stack. This used to return a proper 4082 error:
> SQL>select count(*) from mytable1;
> *** ERROR[4082] Object TRAFODION.MYTEST.MYTABLE1 does not exist or is 
> inaccessible. [2017-08-30 15:47:07]
> This is a regression introduced sometime between the 20170824 daily build and 
> the 20170901 daily build. The 4082 error was still seen in the 20170824 daily 
> build. The same regression is also seen in R2.2.4 20170830 daily build. It 
> also only occurs with the select count(*) statement, as select and showddl 
> both still return the 4082 error, as shown here:
> >>drop schema if exists mytest cascade;
> --- SQL operation complete.
> >>create schema mytest;
> --- SQL operation complete.
> >>set schema mytest;
> --- SQL operation complete.
> >>
> >>create table mytable1 (a int);
> --- SQL operation complete.
> >>insert into mytable1 values (1),(2),(3);
> --- 3 row(s) inserted.
> >>
> >>select count(*) from mytable1;
> (EXPR)
> --------------------
>                    3
> --- 1 row(s) selected.
> >>
> >>alter table mytable1 rename to mytable2;
> --- SQL operation complete.
> >>
> >>showddl mytable1;
> *** ERROR[4082] Object TRAFODION.MYTEST.MYTABLE1 does not exist or is 
> inaccessible.
> --- SQL operation failed with errors.
> >>select * from mytable1;
> *** ERROR[4082] Object TRAFODION.MYTEST.MYTABLE1 does not exist or is 
> inaccessible.
> *** ERROR[8822] The statement was not prepared.
> >>select count(*) from mytable1;
> *** ERROR[8448] Unable to access Hbase interface. Call to 
> ExpHbaseInterface::coProcAggr returned error HBASE_ACCESS_ERROR(-706). Cause: 
> org.apache.hadoop.hbase.TableNotFoundException: TRAFODION.MYTEST.MYTABLE1
> org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1264)
> org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1162)
> org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1146)
> org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1103)
> org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getRegionLocation(ConnectionManager.java:938)
> org.apache.hadoop.hbase.client.HRegionLocator.getRegionLocation(HRegionLocator.java:83)
> org.apache.hadoop.hbase.client.HTable.getRegionLocation(HTable.java:504)
> org.apache.hadoop.hbase.client.HTable.getKeysAndRegionsInRange(HTable.java:747)
> org.apache.hadoop.hbase.client.HTable.getKeysAndRegionsInRange(HTable.java:717)
> org.apache.hadoop.hbase.client.HTable.getStartKeysInRange(HTable.java:1784)
> org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1739)
> org.apache.hadoop.hbase.client.coprocessor.AggregationClient.rowCount(AggregationClient.java:319)
> org.apache.hadoop.hbase.client.coprocessor.AggregationClient.rowCount(AggregationClient.java:285)
> org.trafodion.sql.HTableClient.coProcAggr(HTableClient.java:2064).
> --- 0 row(s) selected.
> >>
> >>drop schema mytest cascade;
> --- SQL operation complete.
> ----- To reproduce
> drop schema if exists mytest cascade;
> create schema mytest;
> set schema mytest;
> create table mytable1 (a int);
> insert into mytable1 values (1),(2),(3);
> select count(*) from mytable1;
> alter table mytable1 rename to mytable2;
> showddl mytable1;
> select * from mytable1;
> select count(*) from mytable1;
> drop schema mytest cascade;
> ---- Analysis
> As Anoop said, when CoProc plan is chosen objectuid was not being added to 
> root tdb. Adding the object uid is necessary as this is used to invalidate 
> query cache upon a DDL change and to invalidate prepared plans held by 
> executor as well. After adding objectuid of table to root tdb we get the 
> expected error messages.
> >>select count(*) from mytable1;
> *** ERROR[4082] Object TRAFODION.MYTEST.MYTABLE1 does not exist or is 
> inaccessible.
> *** ERROR[8822] The statement was not prepared.
> -- s1 was prepared before the alter statement as select count(*) from mytable1
> >>execute s1 ;
> *** ERROR[4082] Object TRAFODION.MYTEST.MYTABLE1 does not exist or is 
> inaccessible.
> *** ERROR[8822] The statement was not prepared.
> --- 0 row(s) selected.
> A simpler way to detect this problem is took for ObjectUIDs in explain 
> output. If they are missing for a Trafodion table, the we will see this 
> problem. Current output of explain is below. Note the line under ROOT with 
> ObjectUIDs.
> ------------------------------------------------------------------ PLAN 
> SUMMARY
> MODULE_NAME .............. DYNAMICALLY COMPILED
> STATEMENT_NAME ........... S1
> PLAN_ID .................. 212373989857170229
> ROWS_OUT ................. 1
> EST_TOTAL_COST ........... 0.01
> STATEMENT ................ select count(*) from mytable1;
> ------------------------------------------------------------------ NODE 
> LISTING
> ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
> REQUESTS_IN .............. 1
> ROWS_OUT ................. 1
> EST_OPER_COST ............ 0
> EST_TOTAL_COST ........... 0.01
> DESCRIPTION
>   est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
>   max_card_est ........... 1
>   fragment_id ............ 0
>   parent_frag ............ (none)
>   fragment_type .......... master
>   record_length .......... 8
>   statement_index ........ 0
>   affinity_value ......... 0
>   max_max_cardinality 100
>   total_overflow_size .... 0.00 KB
>   xn_access_mode ......... read_only
>   xn_autoabort_interval 0
>   auto_query_retry ....... enabled
>   plan_version ....... 2,600
>   embedded_arkcmp ........ used
>   ObjectUIDs ............. 7043208724545270591
>   select_list ............ count(1 )
> HBASE_AGGR ================================ SEQ_NO 1 NO CHILDREN
> REQUESTS_IN .............. (not found)
> ROWS_OUT ................. 1
> EST_OPER_COST ............ 0
> EST_TOTAL_COST ........... 0
> DESCRIPTION
>   max_card_est ........... 1
>   fragment_id ............ 0
>   parent_frag ............ (none)
>   fragment_type .......... master
>   record_length .......... 8
>   aggregates ............. count(1 )



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to