Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

apacheGH-30622: [GAC-42] Add Dremio flightsql-odbc seed #9

Merged

Conversation

alinaliBQ
Copy link

@alinaliBQ alinaliBQ commented Dec 7, 2023

Rationale for this change

Add flightsql-odbc seed written by Dremio to Arrow repo, as we will use this repo later to build the Arrow Flight SQL ODBC driver.

What changes are included in this PR?

Migration only: Adding unchanged seed of flightsql-odbc into Arrow repository under cpp/src/flightsql_odbc.

Are these changes tested?

flightsql-odbc comes with its own sets of tests, but they currently cannot compile on my local machine. flightsql-odbc currently builds Arrow with Git tag b050bd0d31db6412256cec3362c0d57c9732e1f2, which is a commit from 2022. We plan to submit follow-up PRs to adapt flightsql-odbc to build with Arrow 14.0.0.

Are there any user-facing changes?

No.

@alinaliBQ alinaliBQ marked this pull request as ready for review December 7, 2023 23:53
@alinaliBQ alinaliBQ requested a review from affonsov December 7, 2023 23:53
Copy link

github-actions bot commented Dec 8, 2023

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

ryantse and others added 13 commits December 12, 2023 12:52
Change-Id: If5a754b5af95075f3788692b8c16d0dcd08b76b7
Change-Id: I650e412dd70c4411ca54e707596fdd34312855ff
Change-Id: Ib296b798db88c9226dd5bdd92ea9d219ede1c07c
Change-Id: Ie69e7a923b1f7537193a87102ff08439ee03742e
Change-Id: I9f2e86b6addbf72453e6d7473c646d03ef0a8e5f
Change-Id: Ibb0310650bfb2434b762fcf351e905920f3ffc56
Change-Id: I08777349c0182bab017ae090a291081a9d8f469e
Change-Id: Icf9530bac762426d636c9a5988ff882fa3cafd87
Change-Id: Ia3435a1336f4057e4d2f90429df5a086d596c765
Change-Id: I4ddba924f1e62c3e6699150593fd6f5a37e5b98a
Change-Id: Ic9859ec87c330ff7995ee5deba1f874b77082de1
Change-Id: I0e7e0cc66bc49c95e51d5bd1b868b8a928f87cab
Rafael Telles and others added 25 commits December 12, 2023 12:57
Change-Id: I1beb12fbada9de3132102022441d96ceb485917c
- inline descriptor functions used by ODBCStatement::Fetch
- inline and cache the diagnostics from the SPI statement to
the ODBCStatement to avoid virtual function call overhead

Change-Id: Ie08f6a3158218cae7316fb98fb10e3ed277fd1bc
- Do not attempt to resolve the hostname from the HOST key if the
the HOST was not an IP.
- Avoid adding multiple cookie handlers.
- Extend the lifetime of the FlightClientOptions, including the
cookie handler to be the lifetime of the FlightSqlConnection

Change-Id: I3e07abd494221b41a2fc9501cd8e9dcefec32d72
Optimize checks on converter caching by:
- Reducing creation of shared_ptrs for Arrow Arrays.
- Reducing API calls to Arrow's RecordBatch, which is using locks.
- We now assume that if a cached accessor and array are available,
they can be reused for more data unless the application is explicitly
using a different type than before (either by SQLBindCol or SQLGetData).

Change-Id: I4d3a76a75dd1a15a475b32c3c15da72a7901a753
- Rework accessors to not use array slice.
- Don't pass around and cast the array since the accessor already stores the array as a field
- Optimize decimal accessor to avoid shared_ptr creation of a Scalar.
- Optimize Time/Timestamp accessors to make the time unit a template parameter so that
the compiler can treat it as a constant. Also avoid needing to retrieve it during the accessor.

Change-Id: If3412c593d783d30ecc767088c482fbe3d5aa0a4
Fix bug in the accessor caching optimizations when
the array was not yet set.

Change-Id: Iee4e668066af211ceac0fbaddc75707a9f724cc9
The accessor caching optimizations previously relied on the
data array to determine the arrow type to resolve SQL_C_DEFAULT,
however SQLBindCol can be called before this array has been retrieved.

Instead determine the arrow type using the schema.

Change-Id: I418f84ac26b456a068ec162531363aa58cf4a68c
This allows WCHAR size to be set in runtime, enabling the driver to work
well with unixODBC and iODBC, which have different definitions for
SQLWCHAR.

Change-Id: I20d4492072bfd4b6f9847cfdb2258846ecd9c3a5
- Evaluate the type corresponding to the arrow type at bind time instead of
from the accessor, since the accessor may not have been constructed.
- Fix use of ARD records when the ARD has too few records

Change-Id: I5f5795890c6d30be4f667a011edfe8b229238352
Run grpc_init() and grpc_shutdown() directly as part of starting and
stopping the driver based on grpc/grpc#25020

Change-Id: I54799cd0c217cc8038fc07d0d9cf791a12a062e1
Fix crash when using SQLBindCol to get the type of a synthetic column.
The code was incorrectly using the schema directly from Arrow rather
than using the transformed schema from the RecordBatchTransformer.

Change-Id: I0d28a827ac4bb81359e5dd42a62108312d2c1266
Fix a bad cast when retrieving timestamps.

Change-Id: I9badcb88db0a0bdcbf23b632a1c11fa6fd6fef17
This allows the driver to be used on Mac with both unixODBC and iODBC
driver manager without needing to set any environment variables.
This is done by detecting which driver manager us being used and
adjusting the encoding used for SQLWCHAR.

Change-Id: Ica3a593861e9eed6f330e900111a716a799638c1
Change-Id: I2a933fbb9406411ef0129be518e2b80acd707c02
When static (non-class) variables are defined in headers they are just
copied into each compilation unit instead of shared. Instead define it
the recorded encoding to be extern.

Change-Id: I197bedd8367b3b631459b42fc51878af57598066
Fix a crash if a scalar field had a null value. Check for nullity
and explicitly write a null value if the scalar value is null.

Also explicitly define NDEBUG when using release builds to
prevent rapidjson from assert failing in release.

Change-Id: I29f4bac18acdcee98988f08cd713692d780303b1
This reverts commit 4e0415d.

Change-Id: I11a483a56d77a8b9454e4ea6be4726f9b1e12066
Avoid re-converting a string cell if it has already been partially using SQLGetData
and getting the data back as SQL_C_WCHAR or SQL_C_CHAR.

Change-Id: I53370dd9fc0ffb58969c6cc35b65b893204d12f4
Change-Id: I5f78d41d5301584dfc8c83ae43c3cc1e0b26862d
Fix buffer overruns in encoding changes. This allows Full Connect in
ODBCTest on Windows to work again.

Also fix a performance bug where we called strlen() on a std::string.

Change-Id: I0e60287958c1aebe49db0753ba930d7ccd0cb316
- Add an interface for logger
- Define Macro for each log level in the interface
- Add an implementation from the logger interface
- Add the spdlog dependency to the CMakeLists.txt

Change-Id: Ibf1426c86e6e28903619cba328bd6998d4c4f74d
Change-Id: I594ba8b77ff6e69c13bd597efd2a020db3cf5670
This implements buffering of FlightStreamChunks, allowing the driver to
better leverage IO, as results are buffered as they arrive and can be
consumed afterwards when the client requests them.
This adds a new connection property "ChunkBufferCapacity" to set the
buffer capacity with a default value of 5.

Change-Id: I73454fc942f4b5fe8390ec4e582ea18b04eba9b4
This reverts commit 60dd060.
The reason is that this commit introduced build problems on Windows and
there are some design decisions we should take a second look into.

Change-Id: Ia3e0da34b18e43fa593ec0eb2f4482bc18840ef5
This reverts commit bb95d6d: Implement logger interface

- Add an interface for logger
- Define Macro for each log level in the interface
- Add an implementation from the logger interface
- Add the spdlog dependency to the CMakeLists.txt

In addition to that this commit this also:

- Fixes build on Windows
- Changes log strategy to be lazy, so we can log strings without impact
  performance if logging is disabled

Change-Id: If58d9c1ee7ea11390d858bd9815e6b9b11a9bee9
@alinaliBQ alinaliBQ force-pushed the alinaliBQ/GAC-42/add-dremio-flightsql-odbc-seed branch from b51fbe0 to e9c5b4d Compare December 12, 2023 20:58
* Resolve missing EOF in `cpp\src\flightsql_odbc\flightsql-odbc\.gitignore`.
@alinaliBQ alinaliBQ merged commit 56f1af0 into GAC-odbc-driver Dec 12, 2023
45 of 57 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants