drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kristine Hahn (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (DRILL-3435) Some reserved-keywords require table aliasing
Date Wed, 01 Jul 2015 18:41:04 GMT

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

Kristine Hahn edited comment on DRILL-3435 at 7/1/15 6:40 PM:
--------------------------------------------------------------

[~bbevens] How about we change:

FROM:
In other table references, aliases are optional.

TO:
Aliases might be required for [querying nested JSON|https://drill.apache.org/docs/json-data-model/#analyzing-json].
Aliases are definitely required to resolve ambiguous references, such as using the name "user"
to query the Drill profiles. Drill treats "user as a function in this case, and the returns
unexpected results. If you use a table alias, Drill treats "user" as a column identifier,
and the query returns expected results.

[~bbevens] Is there somewhere in your profile querying doc where the bit about using "user"
should be mentioned?


was (Author: krishahn):
[~bbevens] How about we change:

FROM:
In other table references, aliases are optional.

TO:
Aliases might be required for querying nested JSON. Aliases are definitely required resolve
ambiguous references, such as using the name "user" to query the Drill profiles. Drill treats
"user as a function in this case, and the returns unexpected results. If you use a table alias,
Drill treats "user" as a column identifier, and the query returns expected results.

[~bbevens] Is there somewhere in your profile querying doc where the bit about using "user"
should be mentioned?

> Some reserved-keywords require table aliasing
> ---------------------------------------------
>
>                 Key: DRILL-3435
>                 URL: https://issues.apache.org/jira/browse/DRILL-3435
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Documentation
>    Affects Versions: 1.0.0
>            Reporter: Andy Pernsteiner
>            Assignee: Bridget Bevens
>            Priority: Minor
>              Labels: documentation
>
> Not only does drill have a number of reserved keywords that require backticking (``),
there also appear to be some reserved words that require extra care, using table aliases to
be able to perform queries.   One that we've found so far is 'user' .  EG, consider the following
scenario:
> bq. /usr/bin/sqlline -u jdbc:drill: -n root
> then:
> {code} select user from `profiles/2aa32e9e-bdae-8949-8461-c14dafe63ee0.sys.drill` ;
> +-------+
> | user  |
> +-------+
> | root  |
> +-------+
> {code}
> But the actual file in question has the 'user' as a different user:
> {code} cat 2aa32e9e-bdae-8949-8461-c14dafe63ee0.sys.drill|egrep -o 'user\":\"[a-z]+\"'
> user":"apernsteiner"
> {code} 
> The workaround  is to alias the table (t) and prefix the 'user' column in the resultset
w/ the table alias :
> {code}
> 0: jdbc:drill:> select t.`user` from `profiles/2aa32e9e-bdae-8949-8461-c14dafe63ee0.sys.drill`
t ;
> +---------+
> |  user   |
> +---------+
> | apernsteiner  |
> +---------+
> {code}
> @jinfeng gave the following explanation on the user@ list:
> {quote}
> 'user' is a SQL reserved word.
> When it's used alone, it is a system function, just like CURRENT_USER.  See
> http://calcite.incubator.apache.org/docs/reference.html  (System functions
> section).
> When 'user' is qualified with a table alias, it becomes a column
> identifier. 
> {quote}
> The drill documentation @ https://drill.apache.org/docs/reserved-keywords/ merely says
to use backticks (``), not to do any table aliasing.  For those who have columns named 'user',
this may be misleading...



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

Mime
View raw message