I’d still love to hear how the semantics of SELECT INTO differ from CREATE 
TABLE AS SELECT.

When proposing features to Calcite, there needs to be a rationale as well as 
code. I have a similar problem with a recent PR that implements ALTER VIEW and 
apparently does exactly the same as CREATE OR REPLACE VIEW.

Can you explain the use case for cursor management? What is a cursor? Does it 
exist on the server side or the client? Is it shared among connections? What 
can a user accomplish with cursor support that they cannot without it?

As cursor management is in the SQL Standard, and needs parser support, there is 
a good case for adding it to Babel. Or even to the core parser.

Julian


> On Jun 13, 2019, at 10:26 AM, Andrew O <ao2596...@gmail.com> wrote:
> 
> Thanks for the reply. As a couple of follow on questions:
> 
> By the looks of it,  Babel currently only handles query style statements 
> rather than an DDL statement.   Would it ever extend to cover DDL statements 
> for different dialects or is that the role of the server parser?  
> 
> Also,  would cursor management (declare,  fetch, etc.) statements fit in 
> Babel or belong somewhere else?
> 
> Thanks 
> 
> Andrew 
> 
> On Wed, 12 Jun 2019, 17:10 Julian Hyde, <jhyde.apa...@gmail.com 
> <mailto:jhyde.apa...@gmail.com>> wrote:
> I see this as functionality for the Babel parser, not the core parser, 
> because it helps with compatibility but adds no expressive power. 
> 
> No one has yet explained why this syntax was introduced into those engines 
> that have it, eg postgres. It wasn’t “historical reasons” for them. Just 
> curious. 
> 
> On Jun 12, 2019, at 12:12 AM, Andrew O <ao2596...@gmail.com 
> <mailto:ao2596...@gmail.com>> wrote:
> 
>> Translating could work for my use case,  although it may be counter to some 
>> of the other recent discussions where the bias was to keep the parser just 
>> doing parsing and no more (so translation would need to happen in another 
>> step?). 
>> 
>> (and Yes,  as you suggest,  essentially this trying to parse valid Postgres 
>> SQL) 
>> 
>> Thanks 
>> 
>> Andrew 
>> 
>> On Tue, 11 Jun 2019, 23:03 Haisheng Yuan, <h.y...@alibaba-inc.com 
>> <mailto:h.y...@alibaba-inc.com>> wrote:
>> For historical reasons, perhaps. We need to parse and translate into CREATE 
>> TABLE AS SELECT... if we are going to support this syntax for Postgres and 
>> SQL Server.
>> 
>> - Haisheng
>> 
>> ------------------------------------------------------------------
>> 发件人:Julian Hyde<jhyde.apa...@gmail.com <mailto:jhyde.apa...@gmail.com>>
>> 日 期:2019年06月12日 05:41:38
>> 收件人:<dev@calcite.apache.org <mailto:dev@calcite.apache.org>>
>> 主 题:Re: Select into Temporary Table
>> 
>> I’ve never understood why some SQL dialects have “SELECT ... INTO table”. 
>> What’s wrong with “INSERT INTO table SELECT ...”?
>> 
>> Julian
>> 
>> > On Jun 11, 2019, at 1:27 PM, Andrew O <ao2596...@gmail.com 
>> > <mailto:ao2596...@gmail.com>> wrote:
>> > 
>> > Does / should Calcite support select into expressions? E.g. I'm using v1.19
>> > with queries of the style:
>> > 
>> >       select * into temporary table "#myTempResults" from (select colA
>> > from my Table where colA = 'abc')
>> > 
>> > but these queries fail to parse at the "into" words in the expression. (I
>> > have a calcite connection setup with SqlDdlParserImpl)
>> > 
>> > Assuming this isn't currently supported, is this something that is in the
>> > scope of the default Calcite code,  or something that would need to be a
>> > custom extension?
>> > 
>> > I do see in Schema.TableType there is an enum value of TEMPORARY_TABLE, but
>> > I have found where us this set / used.
>> > 
>> > Also,  as additional context
>> > - my target DB for the queries is Postgres (so supports this SQL query
>> > directly)
>> > - also in the future I would like to support parsing / processing Cursor
>> > related operations (e.g. Declare Cursor,  fetch next,  fetch next, etc.).
>> > Although I'm sure if / where these would belong in Calcite.
>> > 
>> > Thanks in advance
>> > 
>> > Andrew

Reply via email to