DEFAULT is from the SQL standard. You can use it when invoking UDFs with named parameters, e.g.
SELECT myFun(p1 => 1, p2 => DEFAULT, p3 => 3) FROM t and in an INSERT statement: INSERT INTO t (x, y, z) VALUES (1, DEFAULT, 2) as long as parameter p2 and column y have default values. So yes, DEFAULT should be a reserved keyword. And Hive screwed up by not reading the standard. If there is a database or schema called DEFAULT then you can quote it, e.g. SELECT * FROM “DEFAULT”.t We could consider making DEFAULT non-reserved in the Babel parser. Julian > On Apr 12, 2022, at 9:06 AM, Gavin Ray <[email protected]> wrote: > > The hacky way would be to add a grammar clause like this I think: > > | "DEFAULT" > > To the "TableRef2" node in the parser grammar: > https://github.com/apache/calcite/blob/82dd78a14f6aef2eeec2f9c94978d04b4acc5359/core/src/main/codegen/templates/Parser.jj#L2087-L2276 > > Not sure all the implications this would have elsewhere though. > > Also for personal opinion -- the notion of a "DEFAULT" database I'm not > sure is a universal thing. > I've never worked with analytical DB's, only Postgres/MySQL -- and in these > DB's the default database is implicit in your queries. > > IE if I connect to a database called "mydb", all queries are automatically > prefixed implicitly with "mydb." > > MySQL I don't think has a default database. A brand-new MySQL DB has 0 > databases. > There is one called "mysql" but that's a system DB, like "pg_catalog" or > "information_schema". > > Confusingly this is different in Postgres, where the "postgres" DB is one > that exists by default > and IS intended to be a user-facing DB. > > > On Mon, Apr 11, 2022 at 11:36 PM Yanjing Wang <[email protected]> > wrote: > >> Hi community, >> >> In hive, DEFAULT is a default database, so one can write sql >> SELECT * FROM DEFAULT.t >> >> In trino, one can write >> SELECT * FROM HIVE.DEFAULT.t >> >> But now Calcite treat DEFAULT as a keyword which will be resolved to >> DEFAULT() function. >> >> What should I do to make the parser to support the DEFAULT in the table >> identifier? >> >> I tried to add the DEFAULT to non-keywords but it would cause DEFAULT() >> function fails. >> >> Now I must tell the user wrap the DEFAULT using quotes like this >> SELECT * FROM HIVE."DEFAULT".t >> >> Thanks in advance. >>
