Skip to content

feat(sources/singlestore): Add ConnectionParams to SingleStore Config#2555

Merged
duwenxin99 merged 2 commits intogoogleapis:mainfrom
pmishchenko-ua:singlestore-add-ssl
Apr 6, 2026
Merged

feat(sources/singlestore): Add ConnectionParams to SingleStore Config#2555
duwenxin99 merged 2 commits intogoogleapis:mainfrom
pmishchenko-ua:singlestore-add-ssl

Conversation

@pmishchenko-ua
Copy link
Copy Markdown
Contributor

@pmishchenko-ua pmishchenko-ua commented Feb 24, 2026

Description

Similarly to MySQL and Postgres, we are adding connectionParams field to the SingleStore config.

PR Checklist

Thank you for opening a Pull Request! Before submitting your PR, there are a
few things you can do to make sure it goes smoothly:

  • Make sure you reviewed
    CONTRIBUTING.md
  • Make sure to open an issue as a
    bug/issue
    before writing your code! That way we can discuss the change, evaluate
    designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)
  • Make sure to add ! if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

@pmishchenko-ua pmishchenko-ua requested a review from a team as a code owner February 24, 2026 14:21
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @pmishchenko-ua, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly improves the flexibility and consistency of SingleStore database connections by introducing a connectionParams field. This change allows users to pass arbitrary driver parameters, primarily for advanced SSL/TLS configurations, aligning the SingleStore source with the capabilities of other database sources like MySQL and Postgres. The update also refines how query timeouts are handled and ensures comprehensive documentation for these new features.

Highlights

  • Enhanced SingleStore Connection Configuration: Introduced a new connectionParams field to the SingleStore configuration, allowing users to specify additional driver parameters for more granular control over database connections, similar to existing MySQL and Postgres configurations.
  • Flexible SSL/TLS Configuration: The connectionParams field enables explicit configuration of SSL/TLS settings (e.g., tls=true, tls=skip-verify, tls=false), with a default of tls=preferred for opportunistic SSL/TLS.
  • Improved Query Timeout Handling: The queryTimeout parameter is now consistently processed and translated into the readTimeout DSN parameter, ensuring proper application of query timeouts.
  • Updated Documentation and Examples: The SingleStore source documentation has been updated with new examples demonstrating various connectionParams configurations, particularly for SSL/TLS, and the reference table now includes the new field.
Changelog
  • docs/en/resources/sources/singlestore.md
    • Added a 'Basic' example to clarify default TLS behavior.
    • Included new examples for configuring SSL/TLS with connectionParams (required, verification disabled, and disabled).
    • Updated the 'Reference' table to document the new connectionParams field, its type, and description.
  • internal/sources/singlestore/singlestore.go
    • Added ConnectionParams map[string]string to the Config struct to support additional driver parameters.
    • Refactored initSingleStoreConnectionPool to accept the Config struct, simplifying parameter passing.
    • Implemented logic within initSingleStoreConnectionPool to parse and apply connectionParams, including defaulting tls to 'preferred' and deriving readTimeout from queryTimeout.
    • Removed the old, separate logic for appending queryTimeout to the DSN.
  • internal/sources/singlestore/singlestore_test.go
    • Added new test cases to TestParseFromYaml to verify correct parsing of connectionParams from YAML.
    • Introduced TestFailInitialization to ensure proper error handling when an invalid queryTimeout duration is provided.
Activity
  • No human activity has occurred on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request introduces ConnectionParams to the SingleStore configuration, enhancing flexibility for database connections, particularly concerning SSL/TLS settings. The changes include updates to the Config struct, modification of the initSingleStoreConnectionPool function to handle ConnectionParams and queryTimeout more robustly, and corresponding documentation and test updates. The documentation now clearly outlines various SSL configurations, which is a good improvement for user clarity. The refactoring of initSingleStoreConnectionPool to accept a Config struct instead of individual parameters improves code readability and maintainability. The addition of tests for ConnectionParams and invalid queryTimeout is also a positive step towards ensuring correctness.

@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Feb 25, 2026
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Feb 25, 2026
@pmishchenko-ua
Copy link
Copy Markdown
Contributor Author

Fixed lint error and commit message vs PR title mismatch.

@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Mar 10, 2026
@duwenxin99
Copy link
Copy Markdown
Contributor

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request introduces connectionParams for SingleStore sources, allowing flexible configuration of underlying SQL driver parameters, including SSL/TLS settings. This involved updating the Config struct in internal/sources/singlestore/singlestore.go to include a ConnectionParams map, refactoring the connection pool initialization to process these parameters, and adding comprehensive documentation with examples in docs/en/resources/sources/singlestore.md. New test cases were also added to internal/sources/singlestore/singlestore_test.go to cover the new parsing and error handling for queryTimeout. A critical security vulnerability was identified where the MySQL DSN is constructed using fmt.Sprintf without URL-encoding sensitive components, potentially leading to DSN injection by allowing attackers to manipulate configuration fields with special characters. The suggested remediation is to use URL escaping for individual DSN components or the driver's mysql.Config struct for safer DSN construction.

@pmishchenko-ua
Copy link
Copy Markdown
Contributor Author

@duwenxin99 this PR is ready for another round of review.

@duwenxin99 duwenxin99 added the priority: p2 Moderately-important priority. Fix may not be included in next release. label Mar 24, 2026
@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 enabled auto-merge (squash) March 24, 2026 14:22
@duwenxin99
Copy link
Copy Markdown
Contributor

Hi @pmishchenko-ua the changes LGTM but the unit test is failing. Could you fix the test and I'll merge this PR? Thanks!

@github-actions
Copy link
Copy Markdown
Contributor

auto-merge was automatically disabled March 24, 2026 18:04

Head branch was pushed to by a user without write access

@pmishchenko-ua pmishchenko-ua force-pushed the singlestore-add-ssl branch 3 times, most recently from 0c35350 to d7978f3 Compare March 24, 2026 18:21
@pmishchenko-ua
Copy link
Copy Markdown
Contributor Author

Thanks @duwenxin99! I've rebased and fixed the unit test failures, so you can do one more tests run.

@pmishchenko-ua
Copy link
Copy Markdown
Contributor Author

Hi @duwenxin99 , could you please approve test workflows to run?

@pmishchenko-ua
Copy link
Copy Markdown
Contributor Author

Hi @duwenxin99 , could you please trigger the integration tests?

@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added tests: run Label to trigger Github Action tests. and removed tests: run Label to trigger Github Action tests. labels Apr 6, 2026
@duwenxin99 duwenxin99 merged commit 73e2a8c into googleapis:main Apr 6, 2026
14 checks passed
@duwenxin99
Copy link
Copy Markdown
Contributor

Hi @pmishchenko-ua, sorry for the delay as I was away attending a summit last week. PR merged. Thanks!

github-actions bot pushed a commit that referenced this pull request Apr 6, 2026
…e Config (#2555)

## Description

Similarly to MySQL and Postgres, we are adding `connectionParams` field
to the SingleStore config.
## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> 73e2a8c
github-actions bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Apr 6, 2026
…e Config (googleapis#2555)

## Description

Similarly to MySQL and Postgres, we are adding `connectionParams` field
to the SingleStore config.
## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> 73e2a8c
Yuan325 added a commit that referenced this pull request Apr 8, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.32.0](v0.31.0...v0.32.0)
(2026-04-08)


### ⚠ BREAKING CHANGES

* update repo name
([#2968](#2968))

### Features

* Add MCP tool annotations to all remaining tools
([#2221](#2221))
([ea09db9](ea09db9))
* **bigquery:** Add conversational analytics tools for Data Agents
([#2517](#2517))
([2490a4b](2490a4b))
* **embeddingModel:** Add Backend API selection fields
([#2592](#2592))
([912aa9e](912aa9e))
* **skills:** Add Claude Code support to generated scripts
([#2966](#2966))
([a1609e1](a1609e1))
* **skills:** Add codex user agent
([#2973](#2973))
([070e939](070e939))
* **skills:** Tool invocation via npx
([#2916](#2916))
([377dc5b](377dc5b))
* **sources/singlestore:** Add ConnectionParams to SingleStore Config
([#2555](#2555))
([73e2a8c](73e2a8c))
* **tool/dataplex-lookup-context:** Relax project constraint and enforce
location
([#2952](#2952))
([7ebfdf1](7ebfdf1))
* **tools/looker:** Looker agent management from MCP
([#2830](#2830))
([649d4ad](649d4ad))
* **ui:** Update to use `/mcp` endpoint
([#2829](#2829))
([c3059c2](c3059c2))


### Bug Fixes

* **bigquery:** Add impersonateServiceAccount to prebuilt config
([#2770](#2770))
([9c3a748](9c3a748))
* **quickstart:** Robust tool lookup and modernize dependencies in
Python samples
([#2863](#2863))
([4c0845d](4c0845d))
* **skills:** Fix skill generation template
([#2914](#2914))
([a01a15e](a01a15e))
* **skills:** Prevent empty strings overriding optional env vars in node
scripts ([#2963](#2963))
([c52adeb](c52adeb))
* **tests/bigquery:** Implement uuid-based isolation and reliable
resource cleanup
([#2547](#2547))
([479d842](479d842))
* **tests/Bigtable:** Implement uuid-based isolation and reliable
resource cleanup
([#2880](#2880))
([a769f15](a769f15))
* Update error for ConvertConfig function
([#2993](#2993))
([62bdabb](62bdabb))


### Code Refactoring

* Update repo name
([#2968](#2968))
([3aae809](3aae809))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
github-actions bot pushed a commit that referenced this pull request Apr 8, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.32.0](v0.31.0...v0.32.0)
(2026-04-08)

### ⚠ BREAKING CHANGES

* update repo name
([#2968](#2968))

### Features

* Add MCP tool annotations to all remaining tools
([#2221](#2221))
([ea09db9](ea09db9))
* **bigquery:** Add conversational analytics tools for Data Agents
([#2517](#2517))
([2490a4b](2490a4b))
* **embeddingModel:** Add Backend API selection fields
([#2592](#2592))
([912aa9e](912aa9e))
* **skills:** Add Claude Code support to generated scripts
([#2966](#2966))
([a1609e1](a1609e1))
* **skills:** Add codex user agent
([#2973](#2973))
([070e939](070e939))
* **skills:** Tool invocation via npx
([#2916](#2916))
([377dc5b](377dc5b))
* **sources/singlestore:** Add ConnectionParams to SingleStore Config
([#2555](#2555))
([73e2a8c](73e2a8c))
* **tool/dataplex-lookup-context:** Relax project constraint and enforce
location
([#2952](#2952))
([7ebfdf1](7ebfdf1))
* **tools/looker:** Looker agent management from MCP
([#2830](#2830))
([649d4ad](649d4ad))
* **ui:** Update to use `/mcp` endpoint
([#2829](#2829))
([c3059c2](c3059c2))

### Bug Fixes

* **bigquery:** Add impersonateServiceAccount to prebuilt config
([#2770](#2770))
([9c3a748](9c3a748))
* **quickstart:** Robust tool lookup and modernize dependencies in
Python samples
([#2863](#2863))
([4c0845d](4c0845d))
* **skills:** Fix skill generation template
([#2914](#2914))
([a01a15e](a01a15e))
* **skills:** Prevent empty strings overriding optional env vars in node
scripts ([#2963](#2963))
([c52adeb](c52adeb))
* **tests/bigquery:** Implement uuid-based isolation and reliable
resource cleanup
([#2547](#2547))
([479d842](479d842))
* **tests/Bigtable:** Implement uuid-based isolation and reliable
resource cleanup
([#2880](#2880))
([a769f15](a769f15))
* Update error for ConvertConfig function
([#2993](#2993))
([62bdabb](62bdabb))

### Code Refactoring

* Update repo name
([#2968](#2968))
([3aae809](3aae809))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> b9ae1c6
github-actions bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Apr 8, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.32.0](googleapis/mcp-toolbox@v0.31.0...v0.32.0)
(2026-04-08)

### ⚠ BREAKING CHANGES

* update repo name
([googleapis#2968](googleapis#2968))

### Features

* Add MCP tool annotations to all remaining tools
([googleapis#2221](googleapis#2221))
([ea09db9](googleapis@ea09db9))
* **bigquery:** Add conversational analytics tools for Data Agents
([googleapis#2517](googleapis#2517))
([2490a4b](googleapis@2490a4b))
* **embeddingModel:** Add Backend API selection fields
([googleapis#2592](googleapis#2592))
([912aa9e](googleapis@912aa9e))
* **skills:** Add Claude Code support to generated scripts
([googleapis#2966](googleapis#2966))
([a1609e1](googleapis@a1609e1))
* **skills:** Add codex user agent
([googleapis#2973](googleapis#2973))
([070e939](googleapis@070e939))
* **skills:** Tool invocation via npx
([googleapis#2916](googleapis#2916))
([377dc5b](googleapis@377dc5b))
* **sources/singlestore:** Add ConnectionParams to SingleStore Config
([googleapis#2555](googleapis#2555))
([73e2a8c](googleapis@73e2a8c))
* **tool/dataplex-lookup-context:** Relax project constraint and enforce
location
([googleapis#2952](googleapis#2952))
([7ebfdf1](googleapis@7ebfdf1))
* **tools/looker:** Looker agent management from MCP
([googleapis#2830](googleapis#2830))
([649d4ad](googleapis@649d4ad))
* **ui:** Update to use `/mcp` endpoint
([googleapis#2829](googleapis#2829))
([c3059c2](googleapis@c3059c2))

### Bug Fixes

* **bigquery:** Add impersonateServiceAccount to prebuilt config
([googleapis#2770](googleapis#2770))
([9c3a748](googleapis@9c3a748))
* **quickstart:** Robust tool lookup and modernize dependencies in
Python samples
([googleapis#2863](googleapis#2863))
([4c0845d](googleapis@4c0845d))
* **skills:** Fix skill generation template
([googleapis#2914](googleapis#2914))
([a01a15e](googleapis@a01a15e))
* **skills:** Prevent empty strings overriding optional env vars in node
scripts ([googleapis#2963](googleapis#2963))
([c52adeb](googleapis@c52adeb))
* **tests/bigquery:** Implement uuid-based isolation and reliable
resource cleanup
([googleapis#2547](googleapis#2547))
([479d842](googleapis@479d842))
* **tests/Bigtable:** Implement uuid-based isolation and reliable
resource cleanup
([googleapis#2880](googleapis#2880))
([a769f15](googleapis@a769f15))
* Update error for ConvertConfig function
([googleapis#2993](googleapis#2993))
([62bdabb](googleapis@62bdabb))

### Code Refactoring

* Update repo name
([googleapis#2968](googleapis#2968))
([3aae809](googleapis@3aae809))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> b9ae1c6
github-actions bot pushed a commit to Jaleel-zhu/genai-toolbox that referenced this pull request Apr 8, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.32.0](googleapis/mcp-toolbox@v0.31.0...v0.32.0)
(2026-04-08)

### ⚠ BREAKING CHANGES

* update repo name
([googleapis#2968](googleapis#2968))

### Features

* Add MCP tool annotations to all remaining tools
([googleapis#2221](googleapis#2221))
([ea09db9](googleapis@ea09db9))
* **bigquery:** Add conversational analytics tools for Data Agents
([googleapis#2517](googleapis#2517))
([2490a4b](googleapis@2490a4b))
* **embeddingModel:** Add Backend API selection fields
([googleapis#2592](googleapis#2592))
([912aa9e](googleapis@912aa9e))
* **skills:** Add Claude Code support to generated scripts
([googleapis#2966](googleapis#2966))
([a1609e1](googleapis@a1609e1))
* **skills:** Add codex user agent
([googleapis#2973](googleapis#2973))
([070e939](googleapis@070e939))
* **skills:** Tool invocation via npx
([googleapis#2916](googleapis#2916))
([377dc5b](googleapis@377dc5b))
* **sources/singlestore:** Add ConnectionParams to SingleStore Config
([googleapis#2555](googleapis#2555))
([73e2a8c](googleapis@73e2a8c))
* **tool/dataplex-lookup-context:** Relax project constraint and enforce
location
([googleapis#2952](googleapis#2952))
([7ebfdf1](googleapis@7ebfdf1))
* **tools/looker:** Looker agent management from MCP
([googleapis#2830](googleapis#2830))
([649d4ad](googleapis@649d4ad))
* **ui:** Update to use `/mcp` endpoint
([googleapis#2829](googleapis#2829))
([c3059c2](googleapis@c3059c2))

### Bug Fixes

* **bigquery:** Add impersonateServiceAccount to prebuilt config
([googleapis#2770](googleapis#2770))
([9c3a748](googleapis@9c3a748))
* **quickstart:** Robust tool lookup and modernize dependencies in
Python samples
([googleapis#2863](googleapis#2863))
([4c0845d](googleapis@4c0845d))
* **skills:** Fix skill generation template
([googleapis#2914](googleapis#2914))
([a01a15e](googleapis@a01a15e))
* **skills:** Prevent empty strings overriding optional env vars in node
scripts ([googleapis#2963](googleapis#2963))
([c52adeb](googleapis@c52adeb))
* **tests/bigquery:** Implement uuid-based isolation and reliable
resource cleanup
([googleapis#2547](googleapis#2547))
([479d842](googleapis@479d842))
* **tests/Bigtable:** Implement uuid-based isolation and reliable
resource cleanup
([googleapis#2880](googleapis#2880))
([a769f15](googleapis@a769f15))
* Update error for ConvertConfig function
([googleapis#2993](googleapis#2993))
([62bdabb](googleapis@62bdabb))

### Code Refactoring

* Update repo name
([googleapis#2968](googleapis#2968))
([3aae809](googleapis@3aae809))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> b9ae1c6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p2 Moderately-important priority. Fix may not be included in next release. tests: run Label to trigger Github Action tests.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants