Skip to content

fix: format BigQuery numeric output as decimal strings#2084

Merged
averikitsch merged 6 commits into
mainfrom
fix-bigquery-numeric-format-v2
Dec 4, 2025
Merged

fix: format BigQuery numeric output as decimal strings#2084
averikitsch merged 6 commits into
mainfrom
fix-bigquery-numeric-format-v2

Conversation

@shobsi

@shobsi shobsi commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Description

Should include a concise description of the changes (bug or feature), it's
impact, along with a summary of the solution

This change updates both bigquery-sql and bigquery-execute-sql tools to format NUMERIC and BIGNUMERIC values as decimal strings (e.g., "9.5") instead of rational fractions (e.g., "19/2"). This ensures the tools' output matches the BigQuery REST API JSON format.

Key changes:

  • Added NormalizeValue function in internal/tools/bigquery/bigquerycommon to handle *big.Rat conversion with 38-digit precision and trailing zero trimming.
  • Updated bigquery-sql and bigquery-execute-sql to use NormalizeValue.
  • Added comprehensive tests in internal/tools/bigquery/bigquerycommon/conversion_test.go.

With these changes the formatting for NUMERIC and BIGNUMERIC is fixed.

Before:

[
  {
    "id": 3,
    "numeric_value": "1"
  },
  {
    "id": 2,
    "numeric_value": "333333333/1000000000"
  },
  {
    "id": 4,
    "numeric_value": "12341/10"
  },
  {
    "id": 1,
    "numeric_value": "19/2"
  }
]

After:

[
  {
    "id": 3,
    "numeric_value": "1"
  },
  {
    "id": 2,
    "numeric_value": "0.333333333"
  },
  {
    "id": 4,
    "numeric_value": "1234.1"
  },
  {
    "id": 1,
    "numeric_value": "9.5"
  }
]

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 #1194

This change updates both `bigquery-sql` and `bigquery-execute-sql` tools to format `NUMERIC` and `BIGNUMERIC` values as decimal strings (e.g., "9.5") instead of rational fractions (e.g., "19/2"). This ensures the tools' output matches the BigQuery REST API JSON format.

Key changes:
- Added `NormalizeValue` function in `internal/tools/bigquery/bigquerycommon` to handle `*big.Rat` conversion with 38-digit precision and trailing zero trimming.
- Updated `bigquery-sql` and `bigquery-execute-sql` to use `NormalizeValue`.
- Added comprehensive tests in `internal/tools/bigquery/bigquerycommon/conversion_test.go`.
@shobsi shobsi requested a review from a team December 2, 2025 05:40
@shobsi shobsi marked this pull request as draft December 2, 2025 05:40
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @shobsi, 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 addresses an inconsistency in how BigQuery numeric types (NUMERIC and BIGNUMERIC) are represented in the output of the bigquery-sql and bigquery-execute-sql tools. By converting these values from rational fractions to decimal strings, the tools' output now accurately matches the expected JSON format of the BigQuery REST API, improving data consistency and interoperability.

Highlights

  • BigQuery Numeric Output Formatting: NUMERIC and BIGNUMERIC values from BigQuery tools (bigquery-sql and bigquery-execute-sql) are now formatted as decimal strings (e.g., "9.5") instead of rational fractions (e.g., "19/2"). This ensures the output matches the BigQuery REST API JSON format.
  • New NormalizeValue Function: A new utility function, NormalizeValue, has been introduced in internal/tools/bigquery/bigquerycommon to handle the conversion of *big.Rat types to decimal strings with 38-digit precision and trailing zero trimming. It also recursively processes nested slices and maps.
  • Tool Integration: Both bigquery-sql and bigquery-execute-sql tools have been updated to utilize the new NormalizeValue function to ensure consistent output formatting for numeric values.
  • Comprehensive Testing: Extensive unit tests have been added for the NormalizeValue function in internal/tools/bigquery/bigquerycommon/conversion_test.go to cover various data types and nested structures, ensuring its correctness.
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 addresses an issue where BigQuery NUMERIC and BIGNUMERIC types were not being formatted as decimal strings. The introduction of the NormalizeValue function and its application in bigquery-sql and bigquery-execute-sql tools is a clean solution. The accompanying tests are comprehensive for the implemented logic. My main feedback is to make the NormalizeValue function more robust by using reflection to handle various slice and map types, which will improve its maintainability and prevent potential issues with types not explicitly handled by the current type switch.

Comment thread internal/tools/bigquery/bigquerycommon/util.go
google-labs-jules Bot and others added 3 commits December 2, 2025 21:04
This change updates both `bigquery-sql` and `bigquery-execute-sql` tools to format `NUMERIC` and `BIGNUMERIC` values as decimal strings (e.g., "9.5") instead of rational fractions (e.g., "19/2"). This ensures the tools' output matches the BigQuery REST API JSON format.

Key changes:
- Added `NormalizeValue` function in `internal/tools/bigquery/bigquerycommon` to handle `*big.Rat` conversion with 38-digit precision and trailing zero trimming.
- Use reflection in `NormalizeValue` to handle any slice or map type robustly.
- Updated `bigquery-sql` and `bigquery-execute-sql` to use `NormalizeValue`.
- Added comprehensive tests in `internal/tools/bigquery/bigquerycommon/conversion_test.go`.
This change updates both `bigquery-sql` and `bigquery-execute-sql` tools to format `NUMERIC` and `BIGNUMERIC` values as decimal strings (e.g., "9.5") instead of rational fractions (e.g., "19/2"). This ensures the tools' output matches the BigQuery REST API JSON format.

Key changes:
- Added `NormalizeValue` function in `internal/tools/bigquery/bigquerycommon` to handle `*big.Rat` conversion with 38-digit precision and trailing zero trimming.
- Use reflection in `NormalizeValue` to handle any slice or map type robustly.
- Updated `bigquery-sql` and `bigquery-execute-sql` to use `NormalizeValue`.
- Added comprehensive tests in `internal/tools/bigquery/bigquerycommon/conversion_test.go`.
@shobsi shobsi marked this pull request as ready for review December 3, 2025 01:16
@shobsi shobsi requested a review from averikitsch December 3, 2025 01:16
@averikitsch averikitsch added the release candidate Use label to signal PR should be included in the next release. label Dec 3, 2025
@averikitsch averikitsch merged commit 155bff8 into main Dec 4, 2025
11 checks passed
@averikitsch averikitsch deleted the fix-bigquery-numeric-format-v2 branch December 4, 2025 18:06
duwenxin99 added a commit that referenced this pull request Dec 5, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.22.0](v0.21.0...v0.22.0)
(2025-12-04)


### Features

* Add allowed-origins flag
([#1984](#1984))
([862868f](862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([#1976](#1976))
([9f76026](9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([#2056](#2056))
([0e7fbf4](0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([#1845](#1845))
([5e43630](5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](17a9792))
* Support alternate accessToken header name
([#1968](#1968))
([18017d6](18017d6))
* Support for annotations
([#2007](#2007))
([ac21335](ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([#1943](#1943))
([7a9cc63](7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([#1722](#1722))
([8752e05](8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([#1919](#1919))
([f4b1f0a](f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([#1934](#1934))
([5ad7c61](5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([#1923](#1923))
([a0f44d3](a0f44d3))


### Bug Fixes

* Add import for firebirdsql
([#2045](#2045))
([fb7aae9](fb7aae9))
* Correct FAQ to mention HTTP tools
([#2036](#2036))
([7b44237](7b44237))
* Format BigQuery numeric output as decimal strings
([#2084](#2084))
([155bff8](155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([#2049](#2049))
([565460c](565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([#2046](#2046))
([a03984c](a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([#2028](#2028))
([730ac6d](730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([#2099](#2099))
([744214e](744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
github-actions Bot pushed a commit that referenced this pull request Dec 5, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.22.0](v0.21.0...v0.22.0)
(2025-12-04)

### Features

* Add allowed-origins flag
([#1984](#1984))
([862868f](862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([#1976](#1976))
([9f76026](9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([#2056](#2056))
([0e7fbf4](0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([#1845](#1845))
([5e43630](5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](17a9792))
* Support alternate accessToken header name
([#1968](#1968))
([18017d6](18017d6))
* Support for annotations
([#2007](#2007))
([ac21335](ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([#1943](#1943))
([7a9cc63](7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([#1722](#1722))
([8752e05](8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([#1919](#1919))
([f4b1f0a](f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([#1934](#1934))
([5ad7c61](5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([#1923](#1923))
([a0f44d3](a0f44d3))

### Bug Fixes

* Add import for firebirdsql
([#2045](#2045))
([fb7aae9](fb7aae9))
* Correct FAQ to mention HTTP tools
([#2036](#2036))
([7b44237](7b44237))
* Format BigQuery numeric output as decimal strings
([#2084](#2084))
([155bff8](155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([#2049](#2049))
([565460c](565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([#2046](#2046))
([a03984c](a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([#2028](#2028))
([730ac6d](730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([#2099](#2099))
([744214e](744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> cb4529c
github-actions Bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Dec 5, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.22.0](googleapis/mcp-toolbox@v0.21.0...v0.22.0)
(2025-12-04)

### Features

* Add allowed-origins flag
([googleapis#1984](googleapis#1984))
([862868f](googleapis@862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([googleapis#1976](googleapis#1976))
([9f76026](googleapis@9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([googleapis#2056](googleapis#2056))
([0e7fbf4](googleapis@0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([googleapis#1845](googleapis#1845))
([5e43630](googleapis@5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](googleapis@1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](googleapis@17a9792))
* Support alternate accessToken header name
([googleapis#1968](googleapis#1968))
([18017d6](googleapis@18017d6))
* Support for annotations
([googleapis#2007](googleapis#2007))
([ac21335](googleapis@ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([googleapis#1943](googleapis#1943))
([7a9cc63](googleapis@7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([googleapis#1722](googleapis#1722))
([8752e05](googleapis@8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([googleapis#1919](googleapis#1919))
([f4b1f0a](googleapis@f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([googleapis#1934](googleapis#1934))
([5ad7c61](googleapis@5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([googleapis#1923](googleapis#1923))
([a0f44d3](googleapis@a0f44d3))

### Bug Fixes

* Add import for firebirdsql
([googleapis#2045](googleapis#2045))
([fb7aae9](googleapis@fb7aae9))
* Correct FAQ to mention HTTP tools
([googleapis#2036](googleapis#2036))
([7b44237](googleapis@7b44237))
* Format BigQuery numeric output as decimal strings
([googleapis#2084](googleapis#2084))
([155bff8](googleapis@155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([googleapis#2049](googleapis#2049))
([565460c](googleapis@565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([googleapis#2046](googleapis#2046))
([a03984c](googleapis@a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([googleapis#2028](googleapis#2028))
([730ac6d](googleapis@730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([googleapis#2099](googleapis#2099))
([744214e](googleapis@744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> cb4529c
github-actions Bot pushed a commit to Jaleel-zhu/genai-toolbox that referenced this pull request Dec 5, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.22.0](googleapis/mcp-toolbox@v0.21.0...v0.22.0)
(2025-12-04)

### Features

* Add allowed-origins flag
([googleapis#1984](googleapis#1984))
([862868f](googleapis@862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([googleapis#1976](googleapis#1976))
([9f76026](googleapis@9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([googleapis#2056](googleapis#2056))
([0e7fbf4](googleapis@0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([googleapis#1845](googleapis#1845))
([5e43630](googleapis@5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](googleapis@1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](googleapis@17a9792))
* Support alternate accessToken header name
([googleapis#1968](googleapis#1968))
([18017d6](googleapis@18017d6))
* Support for annotations
([googleapis#2007](googleapis#2007))
([ac21335](googleapis@ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([googleapis#1943](googleapis#1943))
([7a9cc63](googleapis@7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([googleapis#1722](googleapis#1722))
([8752e05](googleapis@8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([googleapis#1919](googleapis#1919))
([f4b1f0a](googleapis@f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([googleapis#1934](googleapis#1934))
([5ad7c61](googleapis@5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([googleapis#1923](googleapis#1923))
([a0f44d3](googleapis@a0f44d3))

### Bug Fixes

* Add import for firebirdsql
([googleapis#2045](googleapis#2045))
([fb7aae9](googleapis@fb7aae9))
* Correct FAQ to mention HTTP tools
([googleapis#2036](googleapis#2036))
([7b44237](googleapis@7b44237))
* Format BigQuery numeric output as decimal strings
([googleapis#2084](googleapis#2084))
([155bff8](googleapis@155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([googleapis#2049](googleapis#2049))
([565460c](googleapis@565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([googleapis#2046](googleapis#2046))
([a03984c](googleapis@a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([googleapis#2028](googleapis#2028))
([730ac6d](googleapis@730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([googleapis#2099](googleapis#2099))
([744214e](googleapis@744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> cb4529c
github-actions Bot pushed a commit to ishatilwani1301/genai-toolbox that referenced this pull request Dec 5, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.22.0](googleapis/mcp-toolbox@v0.21.0...v0.22.0)
(2025-12-04)

### Features

* Add allowed-origins flag
([googleapis#1984](googleapis#1984))
([862868f](googleapis@862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([googleapis#1976](googleapis#1976))
([9f76026](googleapis@9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([googleapis#2056](googleapis#2056))
([0e7fbf4](googleapis@0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([googleapis#1845](googleapis#1845))
([5e43630](googleapis@5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](googleapis@1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](googleapis@17a9792))
* Support alternate accessToken header name
([googleapis#1968](googleapis#1968))
([18017d6](googleapis@18017d6))
* Support for annotations
([googleapis#2007](googleapis#2007))
([ac21335](googleapis@ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([googleapis#1943](googleapis#1943))
([7a9cc63](googleapis@7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([googleapis#1722](googleapis#1722))
([8752e05](googleapis@8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([googleapis#1919](googleapis#1919))
([f4b1f0a](googleapis@f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([googleapis#1934](googleapis#1934))
([5ad7c61](googleapis@5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([googleapis#1923](googleapis#1923))
([a0f44d3](googleapis@a0f44d3))

### Bug Fixes

* Add import for firebirdsql
([googleapis#2045](googleapis#2045))
([fb7aae9](googleapis@fb7aae9))
* Correct FAQ to mention HTTP tools
([googleapis#2036](googleapis#2036))
([7b44237](googleapis@7b44237))
* Format BigQuery numeric output as decimal strings
([googleapis#2084](googleapis#2084))
([155bff8](googleapis@155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([googleapis#2049](googleapis#2049))
([565460c](googleapis@565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([googleapis#2046](googleapis#2046))
([a03984c](googleapis@a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([googleapis#2028](googleapis#2028))
([730ac6d](googleapis@730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([googleapis#2099](googleapis#2099))
([744214e](googleapis@744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> cb4529c
github-actions Bot pushed a commit to CrazyForks/genai-toolbox that referenced this pull request Dec 5, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.22.0](googleapis/mcp-toolbox@v0.21.0...v0.22.0)
(2025-12-04)

### Features

* Add allowed-origins flag
([googleapis#1984](googleapis#1984))
([862868f](googleapis@862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([googleapis#1976](googleapis#1976))
([9f76026](googleapis@9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([googleapis#2056](googleapis#2056))
([0e7fbf4](googleapis@0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([googleapis#1845](googleapis#1845))
([5e43630](googleapis@5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](googleapis@1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](googleapis@17a9792))
* Support alternate accessToken header name
([googleapis#1968](googleapis#1968))
([18017d6](googleapis@18017d6))
* Support for annotations
([googleapis#2007](googleapis#2007))
([ac21335](googleapis@ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([googleapis#1943](googleapis#1943))
([7a9cc63](googleapis@7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([googleapis#1722](googleapis#1722))
([8752e05](googleapis@8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([googleapis#1919](googleapis#1919))
([f4b1f0a](googleapis@f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([googleapis#1934](googleapis#1934))
([5ad7c61](googleapis@5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([googleapis#1923](googleapis#1923))
([a0f44d3](googleapis@a0f44d3))

### Bug Fixes

* Add import for firebirdsql
([googleapis#2045](googleapis#2045))
([fb7aae9](googleapis@fb7aae9))
* Correct FAQ to mention HTTP tools
([googleapis#2036](googleapis#2036))
([7b44237](googleapis@7b44237))
* Format BigQuery numeric output as decimal strings
([googleapis#2084](googleapis#2084))
([155bff8](googleapis@155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([googleapis#2049](googleapis#2049))
([565460c](googleapis@565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([googleapis#2046](googleapis#2046))
([a03984c](googleapis@a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([googleapis#2028](googleapis#2028))
([730ac6d](googleapis@730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([googleapis#2099](googleapis#2099))
([744214e](googleapis@744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> cb4529c
github-actions Bot pushed a commit to bhardwajRahul/genai-toolbox that referenced this pull request Dec 5, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.22.0](googleapis/mcp-toolbox@v0.21.0...v0.22.0)
(2025-12-04)

### Features

* Add allowed-origins flag
([googleapis#1984](googleapis#1984))
([862868f](googleapis@862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([googleapis#1976](googleapis#1976))
([9f76026](googleapis@9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([googleapis#2056](googleapis#2056))
([0e7fbf4](googleapis@0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([googleapis#1845](googleapis#1845))
([5e43630](googleapis@5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](googleapis@1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](googleapis@17a9792))
* Support alternate accessToken header name
([googleapis#1968](googleapis#1968))
([18017d6](googleapis@18017d6))
* Support for annotations
([googleapis#2007](googleapis#2007))
([ac21335](googleapis@ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([googleapis#1943](googleapis#1943))
([7a9cc63](googleapis@7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([googleapis#1722](googleapis#1722))
([8752e05](googleapis@8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([googleapis#1919](googleapis#1919))
([f4b1f0a](googleapis@f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([googleapis#1934](googleapis#1934))
([5ad7c61](googleapis@5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([googleapis#1923](googleapis#1923))
([a0f44d3](googleapis@a0f44d3))

### Bug Fixes

* Add import for firebirdsql
([googleapis#2045](googleapis#2045))
([fb7aae9](googleapis@fb7aae9))
* Correct FAQ to mention HTTP tools
([googleapis#2036](googleapis#2036))
([7b44237](googleapis@7b44237))
* Format BigQuery numeric output as decimal strings
([googleapis#2084](googleapis#2084))
([155bff8](googleapis@155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([googleapis#2049](googleapis#2049))
([565460c](googleapis@565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([googleapis#2046](googleapis#2046))
([a03984c](googleapis@a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([googleapis#2028](googleapis#2028))
([730ac6d](googleapis@730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([googleapis#2099](googleapis#2099))
([744214e](googleapis@744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> cb4529c
rahulpinto19 pushed a commit that referenced this pull request Dec 8, 2025
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

This change updates both `bigquery-sql` and `bigquery-execute-sql` tools
to format `NUMERIC` and `BIGNUMERIC` values as decimal strings (e.g.,
"9.5") instead of rational fractions (e.g., "19/2"). This ensures the
tools' output matches the BigQuery REST API JSON format.

Key changes:
- Added `NormalizeValue` function in
`internal/tools/bigquery/bigquerycommon` to handle `*big.Rat` conversion
with 38-digit precision and trailing zero trimming.
- Updated `bigquery-sql` and `bigquery-execute-sql` to use
`NormalizeValue`.
- Added comprehensive tests in
`internal/tools/bigquery/bigquerycommon/conversion_test.go`.

With these changes the formatting for NUMERIC and BIGNUMERIC is fixed.

**Before:**

```
[
  {
    "id": 3,
    "numeric_value": "1"
  },
  {
    "id": 2,
    "numeric_value": "333333333/1000000000"
  },
  {
    "id": 4,
    "numeric_value": "12341/10"
  },
  {
    "id": 1,
    "numeric_value": "19/2"
  }
]
```

**After:**

```
[
  {
    "id": 3,
    "numeric_value": "1"
  },
  {
    "id": 2,
    "numeric_value": "0.333333333"
  },
  {
    "id": 4,
    "numeric_value": "1234.1"
  },
  {
    "id": 1,
    "numeric_value": "9.5"
  }
]
```

## 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)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #1194

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Averi Kitsch <akitsch@google.com>
rahulpinto19 pushed a commit that referenced this pull request Dec 8, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.22.0](v0.21.0...v0.22.0)
(2025-12-04)


### Features

* Add allowed-origins flag
([#1984](#1984))
([862868f](862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([#1976](#1976))
([9f76026](9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([#2056](#2056))
([0e7fbf4](0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([#1845](#1845))
([5e43630](5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](17a9792))
* Support alternate accessToken header name
([#1968](#1968))
([18017d6](18017d6))
* Support for annotations
([#2007](#2007))
([ac21335](ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([#1943](#1943))
([7a9cc63](7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([#1722](#1722))
([8752e05](8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([#1919](#1919))
([f4b1f0a](f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([#1934](#1934))
([5ad7c61](5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([#1923](#1923))
([a0f44d3](a0f44d3))


### Bug Fixes

* Add import for firebirdsql
([#2045](#2045))
([fb7aae9](fb7aae9))
* Correct FAQ to mention HTTP tools
([#2036](#2036))
([7b44237](7b44237))
* Format BigQuery numeric output as decimal strings
([#2084](#2084))
([155bff8](155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([#2049](#2049))
([565460c](565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([#2046](#2046))
([a03984c](a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([#2028](#2028))
([730ac6d](730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([#2099](#2099))
([744214e](744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
vinodhinic pushed a commit to vinodhinic/genai-toolbox that referenced this pull request Jan 14, 2026
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

This change updates both `bigquery-sql` and `bigquery-execute-sql` tools
to format `NUMERIC` and `BIGNUMERIC` values as decimal strings (e.g.,
"9.5") instead of rational fractions (e.g., "19/2"). This ensures the
tools' output matches the BigQuery REST API JSON format.

Key changes:
- Added `NormalizeValue` function in
`internal/tools/bigquery/bigquerycommon` to handle `*big.Rat` conversion
with 38-digit precision and trailing zero trimming.
- Updated `bigquery-sql` and `bigquery-execute-sql` to use
`NormalizeValue`.
- Added comprehensive tests in
`internal/tools/bigquery/bigquerycommon/conversion_test.go`.

With these changes the formatting for NUMERIC and BIGNUMERIC is fixed.

**Before:**

```
[
  {
    "id": 3,
    "numeric_value": "1"
  },
  {
    "id": 2,
    "numeric_value": "333333333/1000000000"
  },
  {
    "id": 4,
    "numeric_value": "12341/10"
  },
  {
    "id": 1,
    "numeric_value": "19/2"
  }
]
```

**After:**

```
[
  {
    "id": 3,
    "numeric_value": "1"
  },
  {
    "id": 2,
    "numeric_value": "0.333333333"
  },
  {
    "id": 4,
    "numeric_value": "1234.1"
  },
  {
    "id": 1,
    "numeric_value": "9.5"
  }
]
```

## 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)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes googleapis#1194

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Averi Kitsch <akitsch@google.com>
vinodhinic pushed a commit to vinodhinic/genai-toolbox that referenced this pull request Jan 14, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.22.0](googleapis/mcp-toolbox@v0.21.0...v0.22.0)
(2025-12-04)


### Features

* Add allowed-origins flag
([googleapis#1984](googleapis#1984))
([862868f](googleapis@862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([googleapis#1976](googleapis#1976))
([9f76026](googleapis@9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([googleapis#2056](googleapis#2056))
([0e7fbf4](googleapis@0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([googleapis#1845](googleapis#1845))
([5e43630](googleapis@5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](googleapis@1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](googleapis@17a9792))
* Support alternate accessToken header name
([googleapis#1968](googleapis#1968))
([18017d6](googleapis@18017d6))
* Support for annotations
([googleapis#2007](googleapis#2007))
([ac21335](googleapis@ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([googleapis#1943](googleapis#1943))
([7a9cc63](googleapis@7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([googleapis#1722](googleapis#1722))
([8752e05](googleapis@8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([googleapis#1919](googleapis#1919))
([f4b1f0a](googleapis@f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([googleapis#1934](googleapis#1934))
([5ad7c61](googleapis@5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([googleapis#1923](googleapis#1923))
([a0f44d3](googleapis@a0f44d3))


### Bug Fixes

* Add import for firebirdsql
([googleapis#2045](googleapis#2045))
([fb7aae9](googleapis@fb7aae9))
* Correct FAQ to mention HTTP tools
([googleapis#2036](googleapis#2036))
([7b44237](googleapis@7b44237))
* Format BigQuery numeric output as decimal strings
([googleapis#2084](googleapis#2084))
([155bff8](googleapis@155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([googleapis#2049](googleapis#2049))
([565460c](googleapis@565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([googleapis#2046](googleapis#2046))
([a03984c](googleapis@a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([googleapis#2028](googleapis#2028))
([730ac6d](googleapis@730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([googleapis#2099](googleapis#2099))
([744214e](googleapis@744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
NightStack15 added a commit to NightStack15/googleapis-_-genai-toolbox that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.22.0](googleapis/mcp-toolbox@v0.21.0...v0.22.0)
(2025-12-04)


### Features

* Add allowed-origins flag
([#1984](googleapis/mcp-toolbox#1984))
([862868f](googleapis/mcp-toolbox@862868f))
* **tools/postgres:** Add list-query-stats and get-column-cardinality
functions
([#1976](googleapis/mcp-toolbox#1976))
([9f76026](googleapis/mcp-toolbox@9f76026))
* **tools/spanner:** Add spanner list graphs to prebuiltconfigs
([#2056](googleapis/mcp-toolbox#2056))
([0e7fbf4](googleapis/mcp-toolbox@0e7fbf4))
* **prebuilt/cloud-sql:** Add clone instance tool for cloud sql
([#1845](googleapis/mcp-toolbox#1845))
([5e43630](googleapis/mcp-toolbox@5e43630))
* **serverless-spark:** Add create_pyspark_batch tool
([1bf0b51](googleapis/mcp-toolbox@1bf0b51))
* **serverless-spark:** Add create_spark_batch tool
([17a9792](googleapis/mcp-toolbox@17a9792))
* Support alternate accessToken header name
([#1968](googleapis/mcp-toolbox#1968))
([18017d6](googleapis/mcp-toolbox@18017d6))
* Support for annotations
([#2007](googleapis/mcp-toolbox#2007))
([ac21335](googleapis/mcp-toolbox@ac21335))
* **tool/mssql:** Set default host and port for MSSQL source
([#1943](googleapis/mcp-toolbox#1943))
([7a9cc63](googleapis/mcp-toolbox@7a9cc63))
* **tools/cloudsqlpg:** Add CloudSQL PostgreSQL pre-check tool
([#1722](googleapis/mcp-toolbox#1722))
([8752e05](googleapis/mcp-toolbox@8752e05))
* **tools/postgres-list-publication-tables:** Add new
postgres-list-publication-tables tool
([#1919](googleapis/mcp-toolbox#1919))
([f4b1f0a](googleapis/mcp-toolbox@f4b1f0a))
* **tools/postgres-list-tablespaces:** Add new postgres-list-tablespaces
tool ([#1934](googleapis/mcp-toolbox#1934))
([5ad7c61](googleapis/mcp-toolbox@5ad7c61))
* **tools/spanner-list-graph:** Tool impl + docs + tests
([#1923](googleapis/mcp-toolbox#1923))
([a0f44d3](googleapis/mcp-toolbox@a0f44d3))


### Bug Fixes

* Add import for firebirdsql
([#2045](googleapis/mcp-toolbox#2045))
([fb7aae9](googleapis/mcp-toolbox@fb7aae9))
* Correct FAQ to mention HTTP tools
([#2036](googleapis/mcp-toolbox#2036))
([7b44237](googleapis/mcp-toolbox@7b44237))
* Format BigQuery numeric output as decimal strings
([#2084](googleapis/mcp-toolbox#2084))
([155bff8](googleapis/mcp-toolbox@155bff8))
* Set default annotations for tools in code if annotation not provided
in yaml
([#2049](googleapis/mcp-toolbox#2049))
([565460c](googleapis/mcp-toolbox@565460c))
* **tools/alloydb-postgres-list-tables:** Exclude google_ml schema from
list_tables
([#2046](googleapis/mcp-toolbox#2046))
([a03984c](googleapis/mcp-toolbox@a03984c))
* **tools/alloydbcreateuser:** Remove duplication of project praram
([#2028](googleapis/mcp-toolbox#2028))
([730ac6d](googleapis/mcp-toolbox@730ac6d))
* **tools/mongodb:** Remove `required` tag from the `canonical` field
([#2099](googleapis/mcp-toolbox#2099))
([744214e](googleapis/mcp-toolbox@744214e))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release candidate Use label to signal PR should be included in the next release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BigQuery Tools is returning fraction number in json payload

3 participants