[
https://issues.apache.org/jira/browse/HIVE-26882?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17826001#comment-17826001
]
Rui Li commented on HIVE-26882:
-------------------------------
Hi [~pvary], I tried writing direct SQL with JDO:
{code:Java}
String dml = "update ...";
openTransaction();
query = pm.newQuery("javax.jdo.query.SQL", dml);
long numUpdated = (long) query.execute();
...
commitTransaction();
{code}
But I got an error:
{noformat}
javax.jdo.JDOUserException: JDOQL Single-String query should always start with
SELECT
{noformat}
So it seems JDO only allows direct SELECT statements? I also tried appending a
SELECT before the UPDATE, but then I got another error indicating it doesn't
support multiple statements in the query string. Please let me know if I'm not
using the correct APIs.
> Allow transactional check of Table parameter before altering the Table
> ----------------------------------------------------------------------
>
> Key: HIVE-26882
> URL: https://issues.apache.org/jira/browse/HIVE-26882
> Project: Hive
> Issue Type: Improvement
> Components: Standalone Metastore
> Reporter: Peter Vary
> Assignee: Peter Vary
> Priority: Major
> Labels: pull-request-available
> Fix For: 2.3.10, 4.0.0-beta-1
>
> Time Spent: 4h 40m
> Remaining Estimate: 0h
>
> We should add the possibility to transactionally check if a Table parameter
> is changed before altering the table in the HMS.
> This would provide an alternative, less error-prone and faster way to commit
> an Iceberg table, as the Iceberg table currently needs to:
> - Create an exclusive lock
> - Get the table metadata to check if the current snapshot is not changed
> - Update the table metadata
> - Release the lock
> After the change these 4 HMS calls could be substituted with a single alter
> table call.
> Also we could avoid cases where the locks are left hanging by failed processes
--
This message was sent by Atlassian Jira
(v8.20.10#820010)