You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "David Lee (JIRA)" <ji...@apache.org> on 2017/04/10 21:44:41 UTC

[jira] [Created] (DRILL-5427) SQL Execution Syntax incorrect for Sybase RDBMS

David Lee created DRILL-5427:
--------------------------------

             Summary: SQL Execution Syntax incorrect for Sybase RDBMS
                 Key: DRILL-5427
                 URL: https://issues.apache.org/jira/browse/DRILL-5427
             Project: Apache Drill
          Issue Type: Bug
          Components: Client - JDBC, SQL Parser, Storage - JDBC
    Affects Versions: 1.10.0
         Environment: Windows Linux
            Reporter: David Lee
             Fix For: Future, 1.10.0


The Sybase table syntax should be "database"."owner"."tablename", but "owner" is not being added which produces incorrect SQL when executed.

The default owner is "DBO" for most tables. If DBO is omitted then the syntax should be just "database".."tablename" 

When SYBASE sees  "database".."tablename" it:

A. Checks if there is a tablename owned by the logged in user.
B. If there is no tablename owned by the logged in user it uses DBO by default

This is what I'm seeing using a JDBC plug-in connection to Sybase ASE:

The following statements work fine:

A. show schemas

SCHEMA_NAME
cp.default
dfs.default
dfs.root
dfs.tmp
INFORMATION_SCHEMA
SYB1U
SYB1U.tempdb

B. use SYB1U.tempdb

ok	summary
true	Default schema changed to [SYB1U.tempdb]

C. show tables

TABLE_SCHEMA	TABLE_NAME
SYB1U.tempdb	sysalternates
SYB1U.tempdb	sysattributes
SYB1U.tempdb	syscolumns
SYB1U.tempdb	syscomments
SYB1U.tempdb	sysconstraints
etc.. etc.. etc..

D. SELECT * FROM INFORMATION_SCHEMA.`COLUMNS`
where TABLE_SCHEMA = 'SYB1U.tempdb'
and TABLE_NAME = 'syscolumns'

TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	COLUMN_DEFAULT	IS_NULLABLE	DATA_TYPE
DRILL	SYB1U.tempdb	syscolumns	id	1	(null)	NO	INTEGER
DRILL	SYB1U.tempdb	syscolumns	number	2	(null)	NO	SMALLINT
DRILL	SYB1U.tempdb	syscolumns	colid	3	(null)	NO	SMALLINT
DRILL	SYB1U.tempdb	syscolumns	status	4	(null)	NO	TINYINT
DRILL	SYB1U.tempdb	syscolumns	type	5	(null)	NO	TINYINT
DRILL	SYB1U.tempdb	syscolumns	length	6	(null)	NO	INTEGER
DRILL	SYB1U.tempdb	syscolumns	offset	7	(null)	NO	SMALLINT
DRILL	SYB1U.tempdb	syscolumns	usertype	8	(null)	NO	SMALLINT
DRILL	SYB1U.tempdb	syscolumns	cdefault	9	(null)	NO	INTEGER
DRILL	SYB1U.tempdb	syscolumns	domain	10	(null)	NO	INTEGER
etc.. etc.. etc..

However, the following statements fail:

A. select * from SYB1U.tempdb.syscolumns
DATA_READ ERROR: The JDBC storage plugin failed while trying setup the SQL query. 
sql SELECT *
FROM "tempdb"."syscolumns"
plugin SYB1U
Fragment 0:0

B. select * from SYB1U.tempdb.dbo.syscolumns
VALIDATION ERROR: From line 1, column 15 to line 1, column 19: Table 'SYB1U.tempdb.dbo.syscolumns' not found

C. select * from SYB1U.tempdb..syscolumns
PARSE ERROR: Encountered ".." at line 1, column 27.

In A, the execution engine doesn't include the "owner" portion.
In B, adding dbo fails validation
In C, the default behavior in Sybase for ".." isn't recognized




use SYB1U.tempdb

show tables

SELECT *
FROM INFORMATION_SCHEMA.`COLUMNS`
where TABLE_SCHEMA = 'SYB1U.tempdb'
and TABLE_NAME = 'syscolumns'

I'm not sure if this is a Drill issue or a Calcite issue.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)