Skip to content

Conversation

@lqiu96
Copy link
Member

@lqiu96 lqiu96 commented Dec 5, 2025

See b/447623336 for more information.

Add timestamp_precision field to the Field class. Allows users to set the precision for TIMESTAMP fields.

@product-auto-label product-auto-label bot added size: s Pull request size is small. api: bigquery Issues related to the googleapis/java-bigquery API. labels Dec 5, 2025
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @lqiu96, 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 Field class within the google-cloud-bigquery library by introducing a timestampPrecision property. This new feature enables users to explicitly define the precision for TIMESTAMP fields, supporting either microsecond (6) or picosecond (12) precision. This provides more granular control over how timestamp data is handled and represented in BigQuery field definitions.

Highlights

  • New Field Property: Added a new timestampPrecision field of type Long to the Field class to allow specifying precision for TIMESTAMP fields.
  • Builder and Accessor Methods: Introduced a setTimestampPrecision method in the Field.Builder for configuring the timestamp precision, along with a corresponding getTimestampPrecision method in the Field class.
  • Serialization Support: Integrated the new timestampPrecision field into the toPb() and fromPb() methods for proper serialization and deserialization with Protocol Buffers.
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
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

This pull request introduces the timestamp_precision field to the Field class, allowing users to specify precision for TIMESTAMP fields. The implementation is mostly correct, but I have a few suggestions. I've added comments regarding Javadoc improvements and adding input validation for setTimestampPrecision. Additionally, I noticed that hashCode() and toString() methods were not updated to include the new timestampPrecision field. This is particularly critical for hashCode() as it breaks the contract with equals(), which does consider the new field via the toPb() method. While these methods are not in the current diff, I strongly recommend addressing this to prevent potential issues with using Field objects in collections.

lqiu96 and others added 3 commits December 5, 2025 15:54
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@lqiu96 lqiu96 requested a review from jinseopkim0 December 5, 2025 21:00
@lqiu96 lqiu96 marked this pull request as ready for review December 5, 2025 21:00
@lqiu96 lqiu96 requested review from a team as code owners December 5, 2025 21:00
Copy link
Contributor

@jinseopkim0 jinseopkim0 left a comment

Choose a reason for hiding this comment

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

Would it make sense to update toString() and hashCode() to include the new field?

@product-auto-label product-auto-label bot added size: m Pull request size is medium. and removed size: s Pull request size is small. labels Dec 8, 2025
@lqiu96
Copy link
Member Author

lqiu96 commented Dec 8, 2025

Would it make sense to update toString() and hashCode() to include the new field?

Added!

@lqiu96 lqiu96 requested a review from jinseopkim0 December 8, 2025 18:12
@lqiu96 lqiu96 added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Dec 8, 2025
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Dec 8, 2025
@lqiu96 lqiu96 added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Dec 8, 2025
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Dec 8, 2025
@lqiu96 lqiu96 merged commit 57ffe1d into main Dec 8, 2025
24 checks passed
@lqiu96 lqiu96 deleted the add_timestamp_precision branch December 8, 2025 21:53
diegomarquezp pushed a commit that referenced this pull request Dec 15, 2025
* feat: Add timestamp_precision to Field

* Apply suggestion from @gemini-code-assist[bot]

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* chore: Address GCA PR feedback

* chore: Fix typo

* chore: Remove default value

* chore: Address PR feedback

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
diegomarquezp added a commit that referenced this pull request Dec 15, 2025
* chore: sync with last release from main branch

* feat: Introduce DataFormatOptions to configure the output of BigQuery data types (#4010)

* feat: Create DataFormatOptions in BigQuery

* feat: Add Builder class for DataFormatOptions

* fix: Update existing references of useInt64Timestamp to use DataFormatOption's variant

* chore: Fix lint issues

* chore: Address PR feedback

* chore: Add tests for useInt64Timestamp behavior

* chore: Address failing tests and GCA

* chore: Remove unused fromPb method

* feat: Add timestamp_precision to Field (#4014)

* feat: Add timestamp_precision to Field

* Apply suggestion from @gemini-code-assist[bot]

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* chore: Address GCA PR feedback

* chore: Fix typo

* chore: Remove default value

* chore: Address PR feedback

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* chore: Use custom timestamp validator for ISO8601 timestamps with more than nanosecond precision (#4017)

* chore: Use custom timestamp validator for ISO8601 timestamps with more than nanosecond precision

* chore: Rename helper method to validateTimestamp

* chore: Address GCA comments

* chore: Address last GCA comment

* chore: Update to use assert helper method

* test: Clean up resources created in ITs (#4024)

* chore: Cleanup initialized resources

* chore: Delete created dataset

* chore: Use try-with to close stream

* chore: Cleanup Intellij test warnings (#4026)

* chore: Cleanup initialized resources

* chore: Use try-with to close stream

* chore: Cleanup Intellij test warnings

* chore: Allow for floating point inaccuracies

* chore: Add otel delete operation

* deps: update actions/upload-artifact action to v6 (#4027)

Co-authored-by: Blake Li <blakeli@google.com>

* chore: Use assertThrows in tests (#4028)

* chore: Cleanup initialized resources

* chore: Use try-with to close stream

* chore: Cleanup Intellij test warnings

* chore: Allow for floating point inaccuracies

* chore: Add otel delete operation

* chore: Clean up rest of the IT test file

* chore: Add GCA feedback

* chore: Update renovate.json (#4031)

deps update from bigquerystorage was incorrectly marked as chore(deps). This would cause the upgrade not show up in the release notes and also not trigger release please.

This is because the pattern /^com.google.cloud:google-cloud-bigquery is configured in renovate.json, which matches both bigquery and bigquerystorage. However, I believe the original intention is only for bigquery update in samples, not for bigquerystorage update.

Fixing the pattern so that the String must ends with bigquery

* chore(main): release 2.57.2-SNAPSHOT (#4032)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>

* chore: fix unresolved conflicts

---------

Co-authored-by: Lawrence Qiu <lawrenceqiu@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Mend Renovate <bot@renovateapp.com>
Co-authored-by: Blake Li <blakeli@google.com>
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: bigquery Issues related to the googleapis/java-bigquery API. size: m Pull request size is medium.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants