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 > 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 >>> >>
