Hi Kiran,

This is definitely the place to ask such questions!

Unfortunately, there is no specific documentation or guidelines on how to
support transactions for adapters.

Below some very rough ideas on how this could be done, assuming that the
complete query can be pushed in the underlying DBMS, which supports
transactions.

I guess you need your own implementation of the Connection interface that
wraps internally the real connection and delegate the planning process to
Calcite.
You could use the various components of Calcite to arrive to an executable
plan in the JdbcConvention.
Then you can transform the plan to SQL using RelToSqlConverter and the
appropriate dialect and then execute it using the real connection.

Best,
Stamatis





On Mon, Oct 28, 2019 at 4:11 PM Kiran Purandara <[email protected]> wrote:

> Hello,
>
> This is my 1st question/post so please excuse me in case this is not
> the right forum for such questions or it should be posted elsewhere.
>
> I am working on writing a custom adapter. We need to have finer control on
> both read/write pipelines. In short, we want the adapter to be an interface
> for applications that until now worked with conventional RDBMS which means
> support all the SQL constructs *but also provides us the capabilities that
> calcite enables*.
> Are there any guidelines published for what needs to be extended in order
> to support say something as basic as transactions?
> Since CalciteMetaImpl commit is explicitly throwing exceptions, its not
> possible to do something like...
>
> Connection conn = ...
> conn.setAutoCommit(false);
> try{
>     PreparedStatement prep_stmt = conn.prepareStatement(sql.toString());
>
>     while(...){
>       //set values..
>       prep_stmt.addBatch()/prep_stmt.executeBatch();
>     }
> }
> conn.commit();//or abort
>
> Regards,
> Kiran
>
> PS:  This is the only reference I found when I looked for "calcite
> transactions not working".
>
> [1]
>
> https://mail-archives.apache.org/mod_mbox/calcite-dev/201502.mbox/%3ccamctme+wsqq8ehzapyc9-3stzpb7d5ayxy0aa7pzbyucjnh...@mail.gmail.com%3E
>

Reply via email to