Re: [DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-06-01 Thread Stamatis Zampetakis
I've seen the commit coming through and I do like the approach of keeping
the execution logic separate, thanks Julian!

Best,
Stamatis

On Mon, Jun 1, 2020 at 9:02 PM Julian Hyde  wrote:

> Just to finish this thread... I've now merged 3946.
>
> I did what Stamatis suggested, and moved the DDL classes into core.
> However, I kept the execution logic (e.g. creating the table when
> someone sends a SqlCreateTable command) in server. To do this, I
> created a new interface DdlExecutor, and moved the logic from all of
> the DDL sub-classes of SqlNode into it. It was a lot more work than I
> expected.
>
> Julian
>
> On Fri, May 29, 2020 at 12:26 PM Julian Hyde  wrote:
> >
> > Thanks for the feedback, everyone. Based on the feedback I will move
> > the DDL classes to Core. I reserve the right to reverse direction if
> > those DDL classes start changing in weird ways due to dialect
> > requirements in Babel.
> >
> > If you have further comments, let's discuss in
> > https://issues.apache.org/jira/browse/CALCITE-3946.
> >
> > I aim to get 3946 merged in the next day or two.
> >
> > Julian
> >
> > On Sun, May 17, 2020 at 2:20 PM Stamatis Zampetakis 
> wrote:
> > >
> > > Hello,
> > >
> > > I prefer a bit more the alternative of putting all DDL classes into
> "core".
> > >
> > > When people talk about an SQL parser usually they mean the complete
> beast
> > > (DQL, DDL, DML).
> > > Personally, I wouldn't be surprised to find DDL in "core", especially
> since
> > > DML is already in.
> > >
> > > The dependency from "babel" to "server" sounds a bit weird at first but
> > > given that the only classes
> > > that we have there at the moment are those for handling DDL statements
> it
> > > doesn't bother me a lot.
> > >
> > > If people prefer to go with the "copy-paste" approach I am also fine
> with
> > > that but it is my least favorite.
> > >
> > > Best,
> > > Stamatis
> > >
> > >
> > > On Fri, May 15, 2020 at 10:34 PM Enrico Olivelli 
> > > wrote:
> > >
> > > > Il Ven 15 Mag 2020, 22:26 Julian Hyde  ha scritto:
> > > >
> > > > > Currently, there is no DDL in Calcite's "core" module (or its SQL
> > > > > parser) and the SQL parser in the "server" module adds DDL
> extensions
> > > > > for Calcite's object types.
> > > > >
> > > > > There is a PR [1][2] to add support for "CREATE TABLE" to Babel,
> and
> > > > > it makes "babel" extend the "server" module. In particular, it uses
> > > > > classes SqlDdlNodes and SqlCreateTable from "server".
> > > > >
> > > > > I am uncomfortable with that approach, because "server" does other
> > > > > things besides parse DDL (it creates a stateful server and handles
> > > > > RPC). Also, the needs of other DBMSs' DDL might make Calcite's DDL
> > > > > classes more complicated. So, it all seems to be unnecessary
> coupling.
> > > > >
> > > > > The alternative is to copy-paste the DDL classes (currently
> > > > > SqlDdlNodes, SqlCreateTable and SqlColumnDeclaration) from "babel"
> > > > > into "server".
> > > > >
> > > > > Another alternative would be to move all DDL classes into "core".
> > > > >
> > > > > None of the alternatives are great, but I prefer the copy-paste
> > > > > approach. What do y'all think?
> > > > >
> > > >
> > > > It would be interesting for HerdDB community to have DDL in core
> Calcite
> > > >
> > > >
> > > > Enrico
> > > >
> > > >
> > > > > Julian
> > > > >
> > > > > [1] https://github.com/apache/calcite/pull/1938
> > > > > [2] https://issues.apache.org/jira/browse/CALCITE-3946
> > > > >
> > > >
>


Re: [DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-06-01 Thread Julian Hyde
Just to finish this thread... I've now merged 3946.

I did what Stamatis suggested, and moved the DDL classes into core.
However, I kept the execution logic (e.g. creating the table when
someone sends a SqlCreateTable command) in server. To do this, I
created a new interface DdlExecutor, and moved the logic from all of
the DDL sub-classes of SqlNode into it. It was a lot more work than I
expected.

Julian

On Fri, May 29, 2020 at 12:26 PM Julian Hyde  wrote:
>
> Thanks for the feedback, everyone. Based on the feedback I will move
> the DDL classes to Core. I reserve the right to reverse direction if
> those DDL classes start changing in weird ways due to dialect
> requirements in Babel.
>
> If you have further comments, let's discuss in
> https://issues.apache.org/jira/browse/CALCITE-3946.
>
> I aim to get 3946 merged in the next day or two.
>
> Julian
>
> On Sun, May 17, 2020 at 2:20 PM Stamatis Zampetakis  wrote:
> >
> > Hello,
> >
> > I prefer a bit more the alternative of putting all DDL classes into "core".
> >
> > When people talk about an SQL parser usually they mean the complete beast
> > (DQL, DDL, DML).
> > Personally, I wouldn't be surprised to find DDL in "core", especially since
> > DML is already in.
> >
> > The dependency from "babel" to "server" sounds a bit weird at first but
> > given that the only classes
> > that we have there at the moment are those for handling DDL statements it
> > doesn't bother me a lot.
> >
> > If people prefer to go with the "copy-paste" approach I am also fine with
> > that but it is my least favorite.
> >
> > Best,
> > Stamatis
> >
> >
> > On Fri, May 15, 2020 at 10:34 PM Enrico Olivelli 
> > wrote:
> >
> > > Il Ven 15 Mag 2020, 22:26 Julian Hyde  ha scritto:
> > >
> > > > Currently, there is no DDL in Calcite's "core" module (or its SQL
> > > > parser) and the SQL parser in the "server" module adds DDL extensions
> > > > for Calcite's object types.
> > > >
> > > > There is a PR [1][2] to add support for "CREATE TABLE" to Babel, and
> > > > it makes "babel" extend the "server" module. In particular, it uses
> > > > classes SqlDdlNodes and SqlCreateTable from "server".
> > > >
> > > > I am uncomfortable with that approach, because "server" does other
> > > > things besides parse DDL (it creates a stateful server and handles
> > > > RPC). Also, the needs of other DBMSs' DDL might make Calcite's DDL
> > > > classes more complicated. So, it all seems to be unnecessary coupling.
> > > >
> > > > The alternative is to copy-paste the DDL classes (currently
> > > > SqlDdlNodes, SqlCreateTable and SqlColumnDeclaration) from "babel"
> > > > into "server".
> > > >
> > > > Another alternative would be to move all DDL classes into "core".
> > > >
> > > > None of the alternatives are great, but I prefer the copy-paste
> > > > approach. What do y'all think?
> > > >
> > >
> > > It would be interesting for HerdDB community to have DDL in core Calcite
> > >
> > >
> > > Enrico
> > >
> > >
> > > > Julian
> > > >
> > > > [1] https://github.com/apache/calcite/pull/1938
> > > > [2] https://issues.apache.org/jira/browse/CALCITE-3946
> > > >
> > >


Re: [DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-05-29 Thread Julian Hyde
Thanks for the feedback, everyone. Based on the feedback I will move
the DDL classes to Core. I reserve the right to reverse direction if
those DDL classes start changing in weird ways due to dialect
requirements in Babel.

If you have further comments, let's discuss in
https://issues.apache.org/jira/browse/CALCITE-3946.

I aim to get 3946 merged in the next day or two.

Julian

On Sun, May 17, 2020 at 2:20 PM Stamatis Zampetakis  wrote:
>
> Hello,
>
> I prefer a bit more the alternative of putting all DDL classes into "core".
>
> When people talk about an SQL parser usually they mean the complete beast
> (DQL, DDL, DML).
> Personally, I wouldn't be surprised to find DDL in "core", especially since
> DML is already in.
>
> The dependency from "babel" to "server" sounds a bit weird at first but
> given that the only classes
> that we have there at the moment are those for handling DDL statements it
> doesn't bother me a lot.
>
> If people prefer to go with the "copy-paste" approach I am also fine with
> that but it is my least favorite.
>
> Best,
> Stamatis
>
>
> On Fri, May 15, 2020 at 10:34 PM Enrico Olivelli 
> wrote:
>
> > Il Ven 15 Mag 2020, 22:26 Julian Hyde  ha scritto:
> >
> > > Currently, there is no DDL in Calcite's "core" module (or its SQL
> > > parser) and the SQL parser in the "server" module adds DDL extensions
> > > for Calcite's object types.
> > >
> > > There is a PR [1][2] to add support for "CREATE TABLE" to Babel, and
> > > it makes "babel" extend the "server" module. In particular, it uses
> > > classes SqlDdlNodes and SqlCreateTable from "server".
> > >
> > > I am uncomfortable with that approach, because "server" does other
> > > things besides parse DDL (it creates a stateful server and handles
> > > RPC). Also, the needs of other DBMSs' DDL might make Calcite's DDL
> > > classes more complicated. So, it all seems to be unnecessary coupling.
> > >
> > > The alternative is to copy-paste the DDL classes (currently
> > > SqlDdlNodes, SqlCreateTable and SqlColumnDeclaration) from "babel"
> > > into "server".
> > >
> > > Another alternative would be to move all DDL classes into "core".
> > >
> > > None of the alternatives are great, but I prefer the copy-paste
> > > approach. What do y'all think?
> > >
> >
> > It would be interesting for HerdDB community to have DDL in core Calcite
> >
> >
> > Enrico
> >
> >
> > > Julian
> > >
> > > [1] https://github.com/apache/calcite/pull/1938
> > > [2] https://issues.apache.org/jira/browse/CALCITE-3946
> > >
> >


Re: [DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-05-17 Thread Stamatis Zampetakis
Hello,

I prefer a bit more the alternative of putting all DDL classes into "core".

When people talk about an SQL parser usually they mean the complete beast
(DQL, DDL, DML).
Personally, I wouldn't be surprised to find DDL in "core", especially since
DML is already in.

The dependency from "babel" to "server" sounds a bit weird at first but
given that the only classes
that we have there at the moment are those for handling DDL statements it
doesn't bother me a lot.

If people prefer to go with the "copy-paste" approach I am also fine with
that but it is my least favorite.

Best,
Stamatis


On Fri, May 15, 2020 at 10:34 PM Enrico Olivelli 
wrote:

> Il Ven 15 Mag 2020, 22:26 Julian Hyde  ha scritto:
>
> > Currently, there is no DDL in Calcite's "core" module (or its SQL
> > parser) and the SQL parser in the "server" module adds DDL extensions
> > for Calcite's object types.
> >
> > There is a PR [1][2] to add support for "CREATE TABLE" to Babel, and
> > it makes "babel" extend the "server" module. In particular, it uses
> > classes SqlDdlNodes and SqlCreateTable from "server".
> >
> > I am uncomfortable with that approach, because "server" does other
> > things besides parse DDL (it creates a stateful server and handles
> > RPC). Also, the needs of other DBMSs' DDL might make Calcite's DDL
> > classes more complicated. So, it all seems to be unnecessary coupling.
> >
> > The alternative is to copy-paste the DDL classes (currently
> > SqlDdlNodes, SqlCreateTable and SqlColumnDeclaration) from "babel"
> > into "server".
> >
> > Another alternative would be to move all DDL classes into "core".
> >
> > None of the alternatives are great, but I prefer the copy-paste
> > approach. What do y'all think?
> >
>
> It would be interesting for HerdDB community to have DDL in core Calcite
>
>
> Enrico
>
>
> > Julian
> >
> > [1] https://github.com/apache/calcite/pull/1938
> > [2] https://issues.apache.org/jira/browse/CALCITE-3946
> >
>


Re: [DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-05-15 Thread Enrico Olivelli
Il Ven 15 Mag 2020, 22:26 Julian Hyde  ha scritto:

> Currently, there is no DDL in Calcite's "core" module (or its SQL
> parser) and the SQL parser in the "server" module adds DDL extensions
> for Calcite's object types.
>
> There is a PR [1][2] to add support for "CREATE TABLE" to Babel, and
> it makes "babel" extend the "server" module. In particular, it uses
> classes SqlDdlNodes and SqlCreateTable from "server".
>
> I am uncomfortable with that approach, because "server" does other
> things besides parse DDL (it creates a stateful server and handles
> RPC). Also, the needs of other DBMSs' DDL might make Calcite's DDL
> classes more complicated. So, it all seems to be unnecessary coupling.
>
> The alternative is to copy-paste the DDL classes (currently
> SqlDdlNodes, SqlCreateTable and SqlColumnDeclaration) from "babel"
> into "server".
>
> Another alternative would be to move all DDL classes into "core".
>
> None of the alternatives are great, but I prefer the copy-paste
> approach. What do y'all think?
>

It would be interesting for HerdDB community to have DDL in core Calcite


Enrico


> Julian
>
> [1] https://github.com/apache/calcite/pull/1938
> [2] https://issues.apache.org/jira/browse/CALCITE-3946
>


[DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-05-15 Thread Julian Hyde
Currently, there is no DDL in Calcite's "core" module (or its SQL
parser) and the SQL parser in the "server" module adds DDL extensions
for Calcite's object types.

There is a PR [1][2] to add support for "CREATE TABLE" to Babel, and
it makes "babel" extend the "server" module. In particular, it uses
classes SqlDdlNodes and SqlCreateTable from "server".

I am uncomfortable with that approach, because "server" does other
things besides parse DDL (it creates a stateful server and handles
RPC). Also, the needs of other DBMSs' DDL might make Calcite's DDL
classes more complicated. So, it all seems to be unnecessary coupling.

The alternative is to copy-paste the DDL classes (currently
SqlDdlNodes, SqlCreateTable and SqlColumnDeclaration) from "babel"
into "server".

Another alternative would be to move all DDL classes into "core".

None of the alternatives are great, but I prefer the copy-paste
approach. What do y'all think?

Julian

[1] https://github.com/apache/calcite/pull/1938
[2] https://issues.apache.org/jira/browse/CALCITE-3946