eclipse-vertx / vertx-sql-client

High performance reactive SQL Client written in Java
Apache License 2.0
894 stars 200 forks source link

Pipelining for Oracle Client #1434

Open sudaraka94 opened 7 months ago

sudaraka94 commented 7 months ago

fixes #1352

Motivation:

Since release 23C, Oracle started supporting pipelined operations (ref). This PR adds pipelined execution support for vertx-oracle-client

Conformance:

You should have signed the Eclipse Contributor Agreement as explained in https://github.com/eclipse/vert.x/blob/master/CONTRIBUTING.md Please also make sure you adhere to the code style guidelines: https://github.com/vert-x3/wiki/wiki/Vert.x-code-style-guidelines

sudaraka94 commented 7 months ago

I have implemented tests in #1434 1769e9f using PipeliningQueryTestBase.java. I'm facing this issue with this test case. In this test case, it prepares and executes different queries in a loop. It expects the prepare+execute operations to get executed in order. but with my implementation it doesn't get executed in order. Im trying to fix this issue

vietj commented 6 months ago

@sudaraka94 how is going your investigation with the prepare+execute case ?

sudaraka94 commented 6 months ago

Hello @vietj I sent you an email with the info, let me add it here as well.

Right now I have implemented pipelining and tests (by extending PipeliningQueryTestBase). But there were a few test failures and I spent some time trying to understand why. But I think I might need some help in figuring out whether we should fix the tests or ignore them. Let me summarize the concerns I am having below,

  1. I ignored the following test cases since Oracle doesn't support making batch queries.
  1. I was looking into the code and I noticed that the Oracle Client doesn't cache Prepared Statements (unlike mysql client). But I'm not really sure what is the reason behind this. Wanted to check with you whether we should implement PS caching or just ignore following tests
  1. And I noticed you introduced a change to pause the pipeline when executing prepared statements in sql client on this PR and wanted to check with you the reason behind this and whether we should implement the same in the Oracle Client pipelining.