[
https://issues.apache.org/jira/browse/HIVE-10659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14561901#comment-14561901
]
Sushanth Sowmyan commented on HIVE-10659:
-----------------------------------------
Thanks for the spot, Lefty - created new label. Ultimately, though, 1.2.1 will
replace 1.2.0, so I guess TODOC1.2 would have sufficed - I added this in the
meanwhile anyway.
> 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
> Labels: TODOC1.2.1
> 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)