Skip to content

fix(oracle): normalize encoded proxy usernames in go-ora DSN#2469

Merged
duwenxin99 merged 16 commits into
googleapis:mainfrom
Deeven-Seru:fix/2454-oracle-proxy-user-url-encoding
Mar 17, 2026
Merged

fix(oracle): normalize encoded proxy usernames in go-ora DSN#2469
duwenxin99 merged 16 commits into
googleapis:mainfrom
Deeven-Seru:fix/2454-oracle-proxy-user-url-encoding

Conversation

@Deeven-Seru

Copy link
Copy Markdown
Contributor

Summary

Fix Oracle go-ora DSN construction so proxy usernames with brackets (user[client]) are handled correctly and pre-encoded usernames are not double-encoded.

Fixes #2454.

Root cause

buildGoOraConnString built DSNs using url.URL{Host: connectStringBase, User: url.UserPassword(...)}.
For Oracle connect strings like host:1521/SERVICE, putting the full value in Host is lossy for URL formatting and brittle for userinfo handling.
Also, when a username is already percent-encoded (user%5Bclient%5D), passing it directly to url.UserPassword can double-encode % without normalization.

Fix

  • Normalize user/password with url.PathUnescape before URL userinfo encoding.
  • Construct DSN as:
    • encoded userinfo (url.UserPassword(...).String())
    • raw Oracle connect string appended after @ (preserves host:port/service shape)
  • Preserve wallet query args behavior (ssl=true&wallet=...).

Tests

Added regression coverage in internal/sources/oracle/oracle_connstring_test.go:

  • bracketed proxy username is encoded correctly.
  • already percent-encoded proxy username is not double-encoded.
  • existing wallet/non-wallet DSN cases remain correct.

Validation

  • go test ./internal/sources/oracle -run 'TestBuildGoOraConnString|TestParseFromYamlOracle|TestFailParseFromYaml'

@Deeven-Seru Deeven-Seru requested a review from a team February 13, 2026 06:23
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @DEVELOPER-DEEVEN, 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 enhances the Oracle go-ora driver's connection string (DSN) construction to address issues with special characters and pre-encoded usernames. The changes ensure that proxy usernames with brackets are correctly handled and prevent double-encoding of already percent-encoded values, leading to more reliable and robust Oracle connections.

Highlights

  • DSN Construction Improvement: Refactored the Oracle go-ora DSN construction logic to use url.UserPassword and append the raw Oracle connect string, ensuring correct formatting and handling of special characters.
  • Proxy Username Handling: Implemented proper handling for proxy usernames containing special characters like brackets (user[client]), ensuring they are correctly encoded.
  • Prevent Double-Encoding: Introduced logic to prevent double-encoding of usernames that are already percent-encoded, improving robustness for existing configurations.
  • Wallet Configuration Preservation: Ensured that wallet query arguments (ssl=true&wallet=...) are correctly preserved during the DSN construction process.
  • New Regression Tests: Added comprehensive regression tests to validate the correct encoding of bracketed proxy usernames, prevention of double-encoding, and proper handling of wallet/non-wallet DSN cases.
Changelog
  • internal/sources/oracle/oracle.go
    • Imported the net/url package.
    • Introduced buildGoOraConnString to centralize and improve DSN generation.
    • Added decodePercentEncodedUserInfo to safely unescape user/password components before encoding.
    • Modified initOracleConnection to utilize the new buildGoOraConnString for DSN creation.
    • Removed redundant manual DSN formatting logic.
  • internal/sources/oracle/oracle_connstring_test.go
    • Created a new test file for Oracle connection string tests.
    • Added TestBuildGoOraConnString_EncodesCredentialsAndWallet to verify correct encoding of special characters in user/password and wallet paths.
    • Added TestBuildGoOraConnString_NoWallet to confirm proper DSN generation when no wallet is specified.
    • Added TestBuildGoOraConnString_DoesNotDoubleEncodePercentEncodedUser to ensure pre-encoded usernames are not re-encoded.
Activity
  • Regression coverage was added in internal/sources/oracle/oracle_connstring_test.go to validate the fixes.
  • The changes were validated by running go test ./internal/sources/oracle -run 'TestBuildGoOraConnString|TestParseFromYamlOracle|TestFailParseFromYaml'.
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.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request correctly fixes an issue with double-encoding of usernames and improves the construction of the go-ora DSN. The changes are well-tested. I've provided two suggestions: one to fix a minor bug with whitespace handling for the wallet location, and another to refactor the new tests into a table-driven structure for better maintainability. Overall, great work on this fix.

Comment thread internal/sources/oracle/oracle.go Outdated
Comment thread internal/sources/oracle/oracle_connstring_test.go Outdated
@Deeven-Seru Deeven-Seru requested a review from a team as a code owner March 1, 2026 15:56
@Deeven-Seru

Copy link
Copy Markdown
Contributor Author

/gemini review

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request correctly addresses the normalization of Oracle proxy usernames for go-ora DSNs by unescaping percent-encoded user info before re-encoding. However, I've identified a bug in the new buildGoOraConnString function where it doesn't correctly handle connectStringBase values that already contain query parameters, which would lead to an invalid connection string when a wallet is also used. I've provided a code suggestion to fix this issue and another to add a corresponding test case.

Comment thread internal/sources/oracle/oracle.go Outdated
Comment thread internal/sources/oracle/oracle_connstring_test.go Outdated
Comment thread internal/sources/oracle/oracle_connstring_test.go Outdated
Comment thread internal/sources/oracle/oracle.go Outdated
@Deeven-Seru

Deeven-Seru commented Mar 4, 2026

Copy link
Copy Markdown
Contributor Author

Addressed — pushed commit c1b6fdd.

Changes made per review:

  • Fixed wallet query appending in buildGoOraConnString when connectStringBase already contains query params (uses & instead of a second ?, with trailing separator guard).
  • Added regression coverage for existing-query + wallet case.
  • Moved go-ora DSN tests into internal/sources/oracle/oracle_test.go and consolidated into table-driven tests.

@Deeven-Seru

Copy link
Copy Markdown
Contributor Author

/gemini review

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request effectively addresses an issue in constructing Oracle go-ora DSNs by ensuring correct percent-encoding of usernames and passwords, particularly for proxy users with special characters. The new buildGoOraConnString function correctly normalizes user credentials to prevent double-encoding and handles various connection string formats, including those with existing query parameters. The added unit tests are thorough and provide good coverage for the fix. I have one minor suggestion to improve code clarity.

Comment thread internal/sources/oracle/oracle.go
@Deeven-Seru

Copy link
Copy Markdown
Contributor Author

@duwenxin99 ptal

@duwenxin99

Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99

Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 enabled auto-merge (squash) March 17, 2026 03:29
@duwenxin99 duwenxin99 merged commit b1333cd into googleapis:main Mar 17, 2026
15 checks passed
Yuan325 added a commit that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.30.0](v0.29.0...v0.30.0)
(2026-03-20)


### Features

* **cli:** Add migrate subcommand
([#2679](#2679))
([12171f7](12171f7))
* **cli:** Add serve subcommand
([#2550](#2550))
([1e2c7c7](1e2c7c7))
* **skill:** One skill per toolset
([#2733](#2733))
([5b85c65](5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([#2625](#2625))
([e350fc7](e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([#2718](#2718))
([70ed8a0](70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([#2740](#2740))
([10af468](10af468))


### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([#2772](#2772))
([50b4457](50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([#2469](#2469))
([b1333cd](b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([#2707](#2707))
([58bc772](58bc772))
* **skills:** Improve flag validation and silence unit test output
([#2759](#2759))
([f3da6aa](f3da6aa))
* **test:** Address flaky healthcare integration test run
([#2742](#2742))
([9590821](9590821))


### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([#2763](#2763))
([1528d7c](1528d7c))

---
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 Mar 20, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.30.0](v0.29.0...v0.30.0)
(2026-03-20)

### Features

* **cli:** Add migrate subcommand
([#2679](#2679))
([12171f7](12171f7))
* **cli:** Add serve subcommand
([#2550](#2550))
([1e2c7c7](1e2c7c7))
* **skill:** One skill per toolset
([#2733](#2733))
([5b85c65](5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([#2625](#2625))
([e350fc7](e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([#2718](#2718))
([70ed8a0](70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([#2740](#2740))
([10af468](10af468))

### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([#2772](#2772))
([50b4457](50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([#2469](#2469))
([b1333cd](b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([#2707](#2707))
([58bc772](58bc772))
* **skills:** Improve flag validation and silence unit test output
([#2759](#2759))
([f3da6aa](f3da6aa))
* **test:** Address flaky healthcare integration test run
([#2742](#2742))
([9590821](9590821))

### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([#2763](#2763))
([1528d7c](1528d7c))

---
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> 5ef1c0d
github-actions Bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0)
(2026-03-20)

### Features

* **cli:** Add migrate subcommand
([googleapis#2679](googleapis#2679))
([12171f7](googleapis@12171f7))
* **cli:** Add serve subcommand
([googleapis#2550](googleapis#2550))
([1e2c7c7](googleapis@1e2c7c7))
* **skill:** One skill per toolset
([googleapis#2733](googleapis#2733))
([5b85c65](googleapis@5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([googleapis#2625](googleapis#2625))
([e350fc7](googleapis@e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([googleapis#2718](googleapis#2718))
([70ed8a0](googleapis@70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([googleapis#2740](googleapis#2740))
([10af468](googleapis@10af468))

### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([googleapis#2772](googleapis#2772))
([50b4457](googleapis@50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([googleapis#2469](googleapis#2469))
([b1333cd](googleapis@b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([googleapis#2707](googleapis#2707))
([58bc772](googleapis@58bc772))
* **skills:** Improve flag validation and silence unit test output
([googleapis#2759](googleapis#2759))
([f3da6aa](googleapis@f3da6aa))
* **test:** Address flaky healthcare integration test run
([googleapis#2742](googleapis#2742))
([9590821](googleapis@9590821))

### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([googleapis#2763](googleapis#2763))
([1528d7c](googleapis@1528d7c))

---
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> 5ef1c0d
github-actions Bot pushed a commit to xaas-cloud/genai-toolbox that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0)
(2026-03-20)

### Features

* **cli:** Add migrate subcommand
([googleapis#2679](googleapis#2679))
([12171f7](googleapis@12171f7))
* **cli:** Add serve subcommand
([googleapis#2550](googleapis#2550))
([1e2c7c7](googleapis@1e2c7c7))
* **skill:** One skill per toolset
([googleapis#2733](googleapis#2733))
([5b85c65](googleapis@5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([googleapis#2625](googleapis#2625))
([e350fc7](googleapis@e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([googleapis#2718](googleapis#2718))
([70ed8a0](googleapis@70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([googleapis#2740](googleapis#2740))
([10af468](googleapis@10af468))

### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([googleapis#2772](googleapis#2772))
([50b4457](googleapis@50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([googleapis#2469](googleapis#2469))
([b1333cd](googleapis@b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([googleapis#2707](googleapis#2707))
([58bc772](googleapis@58bc772))
* **skills:** Improve flag validation and silence unit test output
([googleapis#2759](googleapis#2759))
([f3da6aa](googleapis@f3da6aa))
* **test:** Address flaky healthcare integration test run
([googleapis#2742](googleapis#2742))
([9590821](googleapis@9590821))

### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([googleapis#2763](googleapis#2763))
([1528d7c](googleapis@1528d7c))

---
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> 5ef1c0d
github-actions Bot pushed a commit to Jaleel-zhu/genai-toolbox that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0)
(2026-03-20)

### Features

* **cli:** Add migrate subcommand
([googleapis#2679](googleapis#2679))
([12171f7](googleapis@12171f7))
* **cli:** Add serve subcommand
([googleapis#2550](googleapis#2550))
([1e2c7c7](googleapis@1e2c7c7))
* **skill:** One skill per toolset
([googleapis#2733](googleapis#2733))
([5b85c65](googleapis@5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([googleapis#2625](googleapis#2625))
([e350fc7](googleapis@e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([googleapis#2718](googleapis#2718))
([70ed8a0](googleapis@70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([googleapis#2740](googleapis#2740))
([10af468](googleapis@10af468))

### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([googleapis#2772](googleapis#2772))
([50b4457](googleapis@50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([googleapis#2469](googleapis#2469))
([b1333cd](googleapis@b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([googleapis#2707](googleapis#2707))
([58bc772](googleapis@58bc772))
* **skills:** Improve flag validation and silence unit test output
([googleapis#2759](googleapis#2759))
([f3da6aa](googleapis@f3da6aa))
* **test:** Address flaky healthcare integration test run
([googleapis#2742](googleapis#2742))
([9590821](googleapis@9590821))

### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([googleapis#2763](googleapis#2763))
([1528d7c](googleapis@1528d7c))

---
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> 5ef1c0d
github-actions Bot pushed a commit to pepe57/genai-toolbox that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0)
(2026-03-20)

### Features

* **cli:** Add migrate subcommand
([googleapis#2679](googleapis#2679))
([12171f7](googleapis@12171f7))
* **cli:** Add serve subcommand
([googleapis#2550](googleapis#2550))
([1e2c7c7](googleapis@1e2c7c7))
* **skill:** One skill per toolset
([googleapis#2733](googleapis#2733))
([5b85c65](googleapis@5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([googleapis#2625](googleapis#2625))
([e350fc7](googleapis@e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([googleapis#2718](googleapis#2718))
([70ed8a0](googleapis@70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([googleapis#2740](googleapis#2740))
([10af468](googleapis@10af468))

### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([googleapis#2772](googleapis#2772))
([50b4457](googleapis@50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([googleapis#2469](googleapis#2469))
([b1333cd](googleapis@b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([googleapis#2707](googleapis#2707))
([58bc772](googleapis@58bc772))
* **skills:** Improve flag validation and silence unit test output
([googleapis#2759](googleapis#2759))
([f3da6aa](googleapis@f3da6aa))
* **test:** Address flaky healthcare integration test run
([googleapis#2742](googleapis#2742))
([9590821](googleapis@9590821))

### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([googleapis#2763](googleapis#2763))
([1528d7c](googleapis@1528d7c))

---
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> 5ef1c0d
github-actions Bot pushed a commit to bhardwajRahul/genai-toolbox that referenced this pull request Mar 21, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0)
(2026-03-20)

### Features

* **cli:** Add migrate subcommand
([googleapis#2679](googleapis#2679))
([12171f7](googleapis@12171f7))
* **cli:** Add serve subcommand
([googleapis#2550](googleapis#2550))
([1e2c7c7](googleapis@1e2c7c7))
* **skill:** One skill per toolset
([googleapis#2733](googleapis#2733))
([5b85c65](googleapis@5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([googleapis#2625](googleapis#2625))
([e350fc7](googleapis@e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([googleapis#2718](googleapis#2718))
([70ed8a0](googleapis@70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([googleapis#2740](googleapis#2740))
([10af468](googleapis@10af468))

### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([googleapis#2772](googleapis#2772))
([50b4457](googleapis@50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([googleapis#2469](googleapis#2469))
([b1333cd](googleapis@b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([googleapis#2707](googleapis#2707))
([58bc772](googleapis@58bc772))
* **skills:** Improve flag validation and silence unit test output
([googleapis#2759](googleapis#2759))
([f3da6aa](googleapis@f3da6aa))
* **test:** Address flaky healthcare integration test run
([googleapis#2742](googleapis#2742))
([9590821](googleapis@9590821))

### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([googleapis#2763](googleapis#2763))
([1528d7c](googleapis@1528d7c))

---
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> 5ef1c0d
github-actions Bot pushed a commit to CrazyForks/genai-toolbox that referenced this pull request Mar 22, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0)
(2026-03-20)

### Features

* **cli:** Add migrate subcommand
([googleapis#2679](googleapis#2679))
([12171f7](googleapis@12171f7))
* **cli:** Add serve subcommand
([googleapis#2550](googleapis#2550))
([1e2c7c7](googleapis@1e2c7c7))
* **skill:** One skill per toolset
([googleapis#2733](googleapis#2733))
([5b85c65](googleapis@5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([googleapis#2625](googleapis#2625))
([e350fc7](googleapis@e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([googleapis#2718](googleapis#2718))
([70ed8a0](googleapis@70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([googleapis#2740](googleapis#2740))
([10af468](googleapis@10af468))

### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([googleapis#2772](googleapis#2772))
([50b4457](googleapis@50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([googleapis#2469](googleapis#2469))
([b1333cd](googleapis@b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([googleapis#2707](googleapis#2707))
([58bc772](googleapis@58bc772))
* **skills:** Improve flag validation and silence unit test output
([googleapis#2759](googleapis#2759))
([f3da6aa](googleapis@f3da6aa))
* **test:** Address flaky healthcare integration test run
([googleapis#2742](googleapis#2742))
([9590821](googleapis@9590821))

### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([googleapis#2763](googleapis#2763))
([1528d7c](googleapis@1528d7c))

---
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> 5ef1c0d
NirajNandre pushed a commit to NirajNandre/genai-toolbox-fork that referenced this pull request Mar 24, 2026
…pis#2469)

## Summary
Fix Oracle go-ora DSN construction so proxy usernames with brackets
(`user[client]`) are handled correctly and pre-encoded usernames are not
double-encoded.

Fixes googleapis#2454.

## Root cause
`buildGoOraConnString` built DSNs using `url.URL{Host:
connectStringBase, User: url.UserPassword(...)}`.
For Oracle connect strings like `host:1521/SERVICE`, putting the full
value in `Host` is lossy for URL formatting and brittle for userinfo
handling.
Also, when a username is already percent-encoded (`user%5Bclient%5D`),
passing it directly to `url.UserPassword` can double-encode `%` without
normalization.

## Fix
- Normalize user/password with `url.PathUnescape` before URL userinfo
encoding.
- Construct DSN as:
  - encoded userinfo (`url.UserPassword(...).String()`)
- raw Oracle connect string appended after `@` (preserves
`host:port/service` shape)
- Preserve wallet query args behavior (`ssl=true&wallet=...`).

## Tests
Added regression coverage in
`internal/sources/oracle/oracle_connstring_test.go`:
- bracketed proxy username is encoded correctly.
- already percent-encoded proxy username is not double-encoded.
- existing wallet/non-wallet DSN cases remain correct.

## Validation
- `go test ./internal/sources/oracle -run
'TestBuildGoOraConnString|TestParseFromYamlOracle|TestFailParseFromYaml'`

---------

Co-authored-by: DEVELOPER-DEEVEN <144827577+DEVELOPER-DEEVEN@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
NirajNandre pushed a commit to NirajNandre/genai-toolbox-fork that referenced this pull request Mar 24, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0)
(2026-03-20)


### Features

* **cli:** Add migrate subcommand
([googleapis#2679](googleapis#2679))
([12171f7](googleapis@12171f7))
* **cli:** Add serve subcommand
([googleapis#2550](googleapis#2550))
([1e2c7c7](googleapis@1e2c7c7))
* **skill:** One skill per toolset
([googleapis#2733](googleapis#2733))
([5b85c65](googleapis@5b85c65))
* **source/oracledb:** Add Oracle DB for MCP tools and configurations,
updated tools and documentation
([googleapis#2625](googleapis#2625))
([e350fc7](googleapis@e350fc7))
* **tools/looker:** Support git_branch tools for looker.
([googleapis#2718](googleapis#2718))
([70ed8a0](googleapis@70ed8a0))
* **tools/dataplex-search-entries:** Add `scope` support to
search_entries tool
([googleapis#2740](googleapis#2740))
([10af468](googleapis@10af468))


### Bug Fixes

* **cloudloggingadmin:** Increase log injesting time and add auth test
([googleapis#2772](googleapis#2772))
([50b4457](googleapis@50b4457))
* **oracle:** Normalize encoded proxy usernames in go-ora DSN
([googleapis#2469](googleapis#2469))
([b1333cd](googleapis@b1333cd))
* **postgres:** Update execute-sql tool to avoid multi-statements
parameter
([googleapis#2707](googleapis#2707))
([58bc772](googleapis@58bc772))
* **skills:** Improve flag validation and silence unit test output
([googleapis#2759](googleapis#2759))
([f3da6aa](googleapis@f3da6aa))
* **test:** Address flaky healthcare integration test run
([googleapis#2742](googleapis#2742))
([9590821](googleapis@9590821))


### Reverts

* **ci:** Implement conditional sharding logic in integration tests
([googleapis#2763](googleapis#2763))
([1528d7c](googleapis@1528d7c))

---
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>
@andersonrl66

Copy link
Copy Markdown

I tested here and URL is now ok, but login in Oracle is still failling in version 0.30.0

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.

Oracle proxy username with brackets rejected in connection URL

3 participants