[
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)