Skip to content

Fix binary fields being extracted incorrectly#415

Merged
arvanus merged 1 commit into
mariuz:masterfrom
arvanus:fix_384_binary_type
Apr 8, 2025
Merged

Fix binary fields being extracted incorrectly#415
arvanus merged 1 commit into
mariuz:masterfrom
arvanus:fix_384_binary_type

Conversation

@arvanus

@arvanus arvanus commented Apr 8, 2025

Copy link
Copy Markdown
Collaborator

closes #384

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

Hello @arvanus, 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!

Summary of Changes

This pull request addresses issue #384, focusing on correcting how binary fields are extracted. The changes modify the Domain::dataTypeToString function in src/metadata/domain.cpp to properly handle BINARY(X) data types and differentiate between CHAR and BINARY based on the subtype.

Highlights

  • Binary Data Type Handling: The code now correctly identifies and formats BINARY(X) data types, ensuring they are represented accurately.
  • CHAR vs. BINARY Differentiation: The code distinguishes between CHAR and BINARY data types based on the subtype, using kwBINARY when appropriate.

Changelog

  • src/metadata/domain.cpp
    • Added a specific condition to handle datatype 452 (BINARY(X)), returning CHAR(length).
    • Modified the logic for datatype 14 to differentiate between CHAR and BINARY based on the subtype, using kwBINARY when the subtype is not 0.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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 is currently in preview and 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 to provide feedback.

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.


A binary's tale,
From bits to bytes, it sets sail,
No longer misread,
Its true form instead,
A fix that will surely not fail.

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.

@arvanus
arvanus merged commit 6c41d96 into mariuz:master Apr 8, 2025

@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

The pull request addresses an issue where binary fields were being extracted incorrectly. The changes seem reasonable, but I have a few suggestions to improve the code's clarity and correctness.

Summary of Findings

  • Incorrect data type assignment for BINARY(X): The code incorrectly assigns the CHAR data type to BINARY(X) fields. This needs to be corrected to ensure data integrity.
  • Inconsistent use of ternary operator: The use of the ternary operator for determining the keyword (kwCHAR or kwBINARY) is good, but should be applied consistently to avoid confusion.

Merge Readiness

The pull request introduces important fixes for binary field extraction. However, the identified issues need to be addressed before merging to ensure data type correctness and code consistency. I am unable to approve this pull request, and recommend that others review and approve this code before merging.

Comment thread src/metadata/domain.cpp
if (datatype == 452) // BINARY(X)
{

return SqlTokenizer::getKeyword(kwCHAR) + "(" << length << ")";

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.

high

This line assigns the CHAR data type to a BINARY(X) field. This is incorrect and should be BINARY. Consider using the ternary operator here for consistency with the change in the other part of the file.

Suggested change
return SqlTokenizer::getKeyword(kwCHAR) + "(" << length << ")";
return SqlTokenizer::getKeyword(datatype == 452 ? kwBINARY : kwCHAR) + "(" << length << ")";

Comment thread src/metadata/domain.cpp
Comment on lines 317 to +318
case 14:
retval = SqlTokenizer::getKeyword(kwCHAR);
retval = SqlTokenizer::getKeyword(subtype == 0 ? kwCHAR : kwBINARY);

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.

medium

This change correctly uses the ternary operator to determine whether to use kwCHAR or kwBINARY based on the subtype. Good job!

Suggested change
case 14:
retval = SqlTokenizer::getKeyword(kwCHAR);
retval = SqlTokenizer::getKeyword(subtype == 0 ? kwCHAR : kwBINARY);
retval = SqlTokenizer::getKeyword(subtype == 0 ? kwCHAR : kwBINARY);

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.

Boolean fields being extracted incorrectly

1 participant