[ 
https://issues.apache.org/jira/browse/HIVE-10659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14557254#comment-14557254
 ] 

Lefty Leverenz commented on HIVE-10659:
---------------------------------------

This should be documented in the wiki.  I'm not adding a TODOC label because we 
don't have one for 1.2.1, but we could use the TODOC1.2 label.

* [HiveServer2 Clients -- Beeline | 
https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-Beeline–NewCommandLineShell]

> Beeline command which contains semi-colon as a non-command terminator will 
> fail
> -------------------------------------------------------------------------------
>
>                 Key: HIVE-10659
>                 URL: https://issues.apache.org/jira/browse/HIVE-10659
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Hari Sankar Sivarama Subramaniyan
>            Assignee: Hari Sankar Sivarama Subramaniyan
>             Fix For: 1.2.1
>
>         Attachments: HIVE-10659.1.patch
>
>
> Consider a scenario where beeline is used to connect to a mysql server. The 
> commands executed via beeline can include stored procedures. For e.g. the 
> following command used to create a stored procedure is a valid command :
> {code}
> CREATE PROCEDURE RM_TLBS_LINKID() BEGIN IF EXISTS (SELECT * FROM 
> `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_NAME` = 'TBLS' AND `COLUMN_NAME` 
> = 'LINK_TARGET_ID') THEN ALTER TABLE `TBLS` DROP FOREIGN KEY `TBLS_FK3` ; 
> ALTER TABLE `TBLS` DROP KEY `TBLS_N51` ; ALTER TABLE `TBLS` DROP COLUMN 
> `LINK_TARGET_ID` ; END IF; END
> {code}
> MySQL stored procedures have semi-colon ( ; ) as the statement terminator. 
> Since this coincides with beeline's only available command terminator, 
> semi-colon, beeline will not able to execute the above command successfully . 
> i.e, beeline tries to execute the below partial command instead of the 
> complete command shown above.
> {code}
> CREATE PROCEDURE RM_TLBS_LINKID() BEGIN IF EXISTS (SELECT * FROM 
> `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_NAME` = 'TBLS' AND `COLUMN_NAME` 
> = 'LINK_TARGET_ID') THEN ALTER TABLE `TBLS` DROP FOREIGN KEY `TBLS_FK3` ; 
> {code} 
> The above situation can actually happen within Hive when Hive SchemaTool is 
> used to upgrade a mysql metastore db and the scripts used for the upgrade 
> process contain stored procedures(as the one introduced initially by 
> HIVE-7018). As of now, we cannot have any stored procedure as part of MySQL 
> metastore db upgrade scripts because schemaTool uses beeline to connect to 
> MySQL. As of now, beeline fails to execute any "create procedure" command or 
> similar command containing ; . This is a serious limitation; it needs to be 
> fixed by allowing the end user to provide an option to beeline to not use  
> semi-colon as the command delimiter and instead use new line character as the 
> command delimiter.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to