Skip to content

Conversation

olavloite
Copy link
Collaborator

Adds a gRPC server that exposes the API of SpannerLib. This allows clients to connect to run SpannerLib as a child process and connect to it using gRPC.

@olavloite olavloite requested a review from a team as a code owner September 19, 2025 12:51
@olavloite olavloite force-pushed the spanner-lib-grpc-server branch 4 times, most recently from a2d112a to 32c6656 Compare September 19, 2025 16:35
Adds a gRPC server that exposes the API of SpannerLib. This allows clients
to connect to run SpannerLib as a child process and connect to it using
gRPC.
@olavloite olavloite force-pushed the spanner-lib-grpc-server branch from 32c6656 to 9229a2d Compare September 20, 2025 10:09
release-please bot and others added 11 commits September 24, 2025 09:09
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [net.java.dev.jna:jna](https://redirect.github.com/java-native-access/jna) | `5.18.0` -> `5.18.1` | [![age](https://developer.mend.io/api/mc/badges/age/maven/net.java.dev.jna:jna/5.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/net.java.dev.jna:jna/5.18.0/5.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>java-native-access/jna (net.java.dev.jna:jna)</summary>

### [`v5.18.1`](https://redirect.github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5181)

[Compare Source](https://redirect.github.com/java-native-access/jna/compare/5.18.0...5.18.1)

\==============

## Bug Fixes

- [#&#8203;1686](https://redirect.github.com/java-native-access/jna/issues/1686): Fix `sortFields` race condition while getting fields - [@&#8203;bendk](https://redirect.github.com/bendk).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/go-sql-spanner).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzEuOSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Signed-off-by: Marco Pracucci <marco@pracucci.com>
* fix: update all dependencies

* chore: go mod tidy

* build: add ByteBuddy for Java wrapper

---------

Co-authored-by: Knut Olav Løite <koloite@gmail.com>
* feat(ruby): add Ruby FFI wrapper for spannerlib
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Store temporary TransactionOptions in the connection state as local options. Local options
only apply to the current transaction. This simplifies the internal state handling of the
driver, as all transaction state should only be read from the connection state, and not
also from a temporary variable.

This also enables the use of a combination of temporary transaction options and using
SQL statements to set further options. The shared library always includes temporary
transaction options, as the BeginTransaction function accepts TransactionOptions as an
input argument. This meant that using SQL statements to set further transaction options
was not supported through the shared library.
* feat: parse SET TRANSACTION statements

Parse SET TRANSACTION statements and translate these to SET LOCAL statements.
SET TRANSACTION may only be executed in a transaction block, and can only be
used for a specific, limited set of connection properties. The syntax is
specified by the SQL standard and PostgreSQL.

See also https://www.postgresql.org/docs/current/sql-set-transaction.html

This change only adds partial support. The following features will be added
in future changes:
1. SET TRANSACTION READ {WRITE | ONLY} is not picked up by the driver, as
   the type of transaction is set directly when BeginTx is called. A
   refactor of this transaction handling is needed to be able to pick up
   SET TRANSACTION READ ONLY / SET TRANSACTION READ WRITE statements that
   are executed after BeginTx has been called.
2. PostgreSQL allows multiple transaction modes to be set in a single
   SET TRANSACTION statement. E.g. the following is allowed:
   SET TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE
   The current implementation only supports one transaction mode per
   SET statement.

* feat: support multiple transaction options in one statement
* feat: parse SET TRANSACTION statements

Parse SET TRANSACTION statements and translate these to SET LOCAL statements.
SET TRANSACTION may only be executed in a transaction block, and can only be
used for a specific, limited set of connection properties. The syntax is
specified by the SQL standard and PostgreSQL.

See also https://www.postgresql.org/docs/current/sql-set-transaction.html

This change only adds partial support. The following features will be added
in future changes:
1. SET TRANSACTION READ {WRITE | ONLY} is not picked up by the driver, as
   the type of transaction is set directly when BeginTx is called. A
   refactor of this transaction handling is needed to be able to pick up
   SET TRANSACTION READ ONLY / SET TRANSACTION READ WRITE statements that
   are executed after BeginTx has been called.
2. PostgreSQL allows multiple transaction modes to be set in a single
   SET TRANSACTION statement. E.g. the following is allowed:
   SET TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE
   The current implementation only supports one transaction mode per
   SET statement.

* feat: support multiple transaction options in one statement

* feat: support transaction options in BEGIN statements

Adds support for including transaction options in BEGIN statements, like:

```sql
BEGIN READ ONLY;
BEGIN READ WRITE;
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN READ WRITE, ISOLATION LEVEL SERIALIZABLE;
```

* chore: re-trigger checks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants