Il Lun 16 Mar 2020, 23:55 Julian Hyde <[email protected]> ha scritto:
> Change the unparse operation for the dialect so that you generate UPSERT > rather than MERGE. > > IIRC we did this for another dialect - maybe Phoenix. > Julian, In my case (HerdDB) I need to see the presence of UPSERT in the RelNode (EnumerableTableModify oŕ LogicalTableModify) I saw the JIRA where you introduced UPSERT for Phoenix I will check deeper, thanks Enrico > Julian > > > On Mar 16, 2020, at 1:22 AM, Enrico Olivelli <[email protected]> > wrote: > > > > Il Lun 16 Mar 2020, 09:06 Stamatis Zampetakis <[email protected]> ha > > scritto: > > > >> Hi Enrico, > >> > >> I have the impression that UPSERT is currently supported only at the > parser > >> level [1] so it seems normal that you don't find something relevant in > >> LogicalTableModify etc. Note that the SQL standard equivalent is the > MERGE > >> statement [2] but this also seems to be supported only at the > >> parser/validator level [2]. > >> I guess it is not necessary to introduce more things in TableModify > since > >> UPSERT seems to be syntactic sugar. I think that most of the work can be > >> done in RelToSqlConverter [4] and possibly the rest of the code can be > left > >> intact. > >> > > > > I would like to sens a patch that introduces the ability to keep the > > SqlInsert 'keywords' and pass them to TableModify? > > Would it be a good approach? > > > > The alternative is to introduce a new Operation but it would be a more > > invasive change and I think it is not worth > > > > > > Enrico > > > > > >> Best, > >> Stamatis > >> > >> [1] https://issues.apache.org/jira/browse/CALCITE-492 > >> [2] https://en.wikipedia.org/wiki/Merge_(SQL) > >> [3] https://issues.apache.org/jira/browse/CALCITE-985 > >> [4] > >> > >> > https://github.com/apache/calcite/blob/d234626227954eefffe49f42abec65c649ffe3a6/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java#L2395 > >> > >>> On Sun, Mar 15, 2020 at 6:53 PM Enrico Olivelli <[email protected]> > >>> wrote: > >>> > >>> Hi, > >>> I am trying to use UPSERT but it seems to me that in TableModify (or > >>> best LogicalTableModify or EnumerableTableModify) there is no way to > >>> distinguish an INSERT from an UPSERT. > >>> > >>> Am I missing something? > >>> > >>> Regards > >>> Enrico > >>> > >> >
