> On May 16, 2016, 9:22 p.m., Aihua Xu wrote:
> > metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java,
> > lines 698-699
> > <https://reviews.apache.org/r/47353/diff/1/?file=1382994#file1382994line698>
> >
> > Similar to openTransaction, commitTransaction will not do the real
> > commit until openTrasactionCalls reaches 0. So
> > deleteTableColumnStatistics() or updateTableColumnStatistics() will not be
> > committed actually, until line 244 in which all the operations will be
> > committed.
> >
> >
> > Here is the commitTransaction() logic.
> >
> > openTrasactionCalls--;
> > debugLog("Commit transaction: count = " + openTrasactionCalls + ",
> > isactive "+ currentTransaction.isActive());
> >
> > if ((openTrasactionCalls == 0) && currentTransaction.isActive()) {
> > transactionStatus = TXN_STATUS.COMMITED;
> > currentTransaction.commit();
> > }
>
> Ashutosh Chauhan wrote:
> I didn't verify in debugger. But I would expect following is whats gonna
> happen.
> AlterHandler calls deleteTableStats() which will call openTransaction()
> which increases openTransactionCalls to 1. Before returning deleteTableStats
> call commitTransaction() which will set openTransactionCalls to 0. Later when
> AlterHandler calls updateTableColumnStats() it will start new transaction,
> since openTransactionCalls now is 0.
>
> May be I am missing something obvious.
Actually it will reach to 0 until line 244. The first openTransaction is in
line 108. So all the calls in between will have openTransactionCalls > 0 and
won't involve actual commit. alterTableUpdateTableColumnStats() function is a
private function which is called from the following function. When this
function is called, it's already inside a transaction.
public void alterTable(RawStore msdb, Warehouse wh, String dbname,
String name, Table newt, EnvironmentContext environmentContext);
- Aihua
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/47353/#review133447
-----------------------------------------------------------
On May 13, 2016, 7:17 p.m., Aihua Xu wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/47353/
> -----------------------------------------------------------
>
> (Updated May 13, 2016, 7:17 p.m.)
>
>
> Review request for hive and Chaoyu Tang.
>
>
> Repository: hive-git
>
>
> Description
> -------
>
> HIVE-13616: Investigate renaming a table without invalidating the column stats
>
>
> Diffs
> -----
>
> metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
> 0652b9db1a4224262611ff9258e871647442cfeb
> ql/src/test/queries/clientpositive/rename_table_update_column_stats.q
> PRE-CREATION
> ql/src/test/results/clientpositive/rename_table_update_column_stats.q.out
> PRE-CREATION
>
> Diff: https://reviews.apache.org/r/47353/diff/
>
>
> Testing
> -------
>
> Tests have been run and the failed tests don't seem to be related.
>
> To carry over the column stats during renaming the table, the patch
> 1. Save affected column stats
> 2. Rename the table
> 3. Write the saved column stats for the new table.
>
> In this order, column stats will find the foreign key when writing in 3).
>
>
> Thanks,
>
> Aihua Xu
>
>