hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sushanth Sowmyan (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HIVE-10659) Beeline command which contains semi-colon as a non-command terminator will fail
Date Wed, 27 May 2015 22:44:17 GMT

     [ https://issues.apache.org/jira/browse/HIVE-10659?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Sushanth Sowmyan updated HIVE-10659:
------------------------------------
    Labels: TODOC121  (was: )

> 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: TODOC121
>             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)

Mime
View raw message