Commit 25218e8
feat: Implement ExecuteQuery API for SQL support (#2280)
* feat: publish the Cloud Bigtable ExecuteQuery API
The ExecuteQuery API will allow users to query Bigtable using SQL
PiperOrigin-RevId: 650660213
Source-Link: googleapis/googleapis@f681f79
Source-Link: googleapis/googleapis-gen@3180845
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMzE4MDg0NTQ4NzEzNjc5NDk1MmI4ZjM2NWZlNmM2ODY4OTk5ZDljMCJ9
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* feat: publish ProtoRows Message
This is needed to parse ExecuteQuery responses
PiperOrigin-RevId: 651386373
Source-Link: googleapis/googleapis@a5be6fa
Source-Link: googleapis/googleapis-gen@d467ce8
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZDQ2N2NlODkzYTA0YzQxZTUwNDk4MzM0NmMyMTVkNDFmZDI2MzY1MCJ9
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* Temporarily allow method level tests to pass for ExecuteQuery
I will re-add these once the client supports the appropriate behavior for readRows
Change-Id: I4b5b0861e93f0a8b97d51556c74bccfe0b1da521
* Copy SqlRowMerger from internal code
This moves things mostly as is. I will move everything to appropriate packages in a follow on (e.g. utils will move to internal). Wanted to keep the changes as minimal as possible
Renames ProtoRowsBatchMergingStateMachine to ProtoRowsMergingStateMachine and removes the obsolete ProtoRowsMergingStateMachine
This simplifies the internal code by removing support for the old api. It should not change any behavior for he ProtoRowsBatch API
Change-Id: I8e8267a9cfeb59e0f8455876d1bccdb7c3778b76
* Implement main interfaces for interacting with ResultSets
This adds the main interfaces for interacting with data:
ResultSet, StructReader, and Struct. StructReader is used
by ResultSet, SqlRow, and Struct to provide a standard set
of accessors for the data.
I'm a little uncertain about the package structure right
now. I've put interfaces that users will interact with
directly in 'models' and everything else in 'internal'.
Internal will include both internal interfaces and the
implementations of the public interfaces. Otherwise I have
kept the package structure pretty flat but happy to group
the sql stuff together more.
This includes thorough documentation for the public interfaces.
Change-Id: I4535daffc596e9355da64b5655c58a68e5e7a95f
* Implement proto to java conversion via AbstractProtoStructReader
This will be re-used for structs in the following commit. The current
design implements this at the Row/Struct level instead of ResultSet &
Struct so that result set can operate on rows of different types when we
support arrow. ResultSet will then be a light wrapper where each getType
call is passed through to the current row.
Change-Id: I21fb4cc0cd830110d5455581491c5b1861efbcb1
* Add implementation for ProtoStruct
Change-Id: Ie9d3892fe92c779a6b81d457c31b534bdce20f38
* Implement ResultSet
This also removes the metadata helpers from the ResultSet interface.
These helpers will live on ResultSetMetadata instead.
Change-Id: Iba60b42b4e62f2d72c5a21206edf716c0ad5ea73
* Implement ResultSetMetadata and use it everwhere we operate on metadata
Also fix AbstractProtoStructReaderTest which was using the wrong runner
and not executing any tests. Fixes a couple test bugs as well.
Change-Id: Ia59459f93dd38046e9ac22995191becaad6ea44e
* Create execute query callables and wire up api to data client
This uses the ExecuteQueryCallContext to pass the metadata back
to the user using a future. Note that we need to be very careful
here that errors always close this future. That is why watchdog
happens higher in the call chain that for other streaming RPCs
Also note i decided to unwrap executeExceptions so that when
possible the future throws the same exceptions as the row stream
Change-Id: Ie9dd523a980efecb2cff010a2ffd7ac52b5f8ac7
* Add statement API for ExecuteQuery requests
Change-Id: Id9113adb24419da18f6e43e47c0c73cddf4b622e
* Implement java representation of Type protobuf
The admin types in admin.v2.models.Type will be migrated to
1) share the same implementation in common, while defining a
narrow interface like SqlType 2) be renamed to SchemaType.
We aren't going to block the Sql launch on this though. It
can happen after.
Change-Id: I9dea84fe9b7b2e0b46e8ece4cb666651183dc639
* Remove unsupported query param types and add doc
Change-Id: I41a28069865df6aa688ac5bc96181aae9f18deb4
* Add clirr exclusion for new proto method. Fix dropped import
Change-Id: I0cf3bd45a5f2bb3e2ad980d4170049d69e701d7e
* Small doc update and remove obsolete TODOs
Change-Id: Ie08217d025df3ec3c97dc96268f1c4e1d20b33bf
* Minor documentation fix for executeQuery
Change-Id: I6073e41b5a5b74b91671002cb93dc42c4023f10f
---------
Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>1 parent f95a6f2 commit 25218e8
File tree
89 files changed
+43769
-368
lines changed- google-cloud-bigtable
- src
- main
- java/com/google/cloud/bigtable
- common
- data/v2
- internal
- models/sql
- stub
- sql
- resources/META-INF/native-image/com.google.cloud.bigtable.data.v2
- test/java/com/google/cloud/bigtable
- common
- data/v2
- internal
- models/sql
- stub
- sql
- grpc-google-cloud-bigtable-v2
- src/main/java/com/google/bigtable/v2
- proto-google-cloud-bigtable-v2/src/main
- java/com/google/bigtable/v2
- proto/google/bigtable/v2
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
89 files changed
+43769
-368
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
326 | 326 | | |
327 | 327 | | |
328 | 328 | | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
329 | 334 | | |
330 | 335 | | |
331 | 336 | | |
| |||
0 commit comments