java.jdbc

Boolean - BIT(1) - columns are returned as byte[] via some DB connections

Details

  • Type: Defect Defect
  • Status: Resolved Resolved
  • Priority: Major Major
  • Resolution: Declined
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:
    None
  • Environment:
    Specifically using the MySQL connector 5.0.x or 5.1.x against a Tungsten Connector proxy

Description

The root cause appears to be that rs.getObject( i ) seems to take the field flags into effect over the basic java.sql.Types values.

In this case a BIT(1) column comes back from MySQL as type 16 (BOOLEAN), flags UNSIGNED. From Tungsten it comes back as type 16, flags BINARY BLOB UNSIGNED.

The resultset-seq construction code is pretty cavalier about using just getObject() instead of more specific types so this might be the start of a smarter approach to that.

Activity

Hide
Sean Corfield added a comment -

Further update: this looks to be a configuration or version issue with the Tungsten Connector setup as we've been able to repro the problem in one environment but it works as expected in a newer environment.

May still go ahead with this change anyway since I believe it's a good change for robustness, but it looks lower priority right now.

Show
Sean Corfield added a comment - Further update: this looks to be a configuration or version issue with the Tungsten Connector setup as we've been able to repro the problem in one environment but it works as expected in a newer environment. May still go ahead with this change anyway since I believe it's a good change for robustness, but it looks lower priority right now.
Hide
Sean Corfield added a comment -

Pushed a fix for this but would like more hands on this in SNAPSHOT form before declaring it resolved.

Show
Sean Corfield added a comment - Pushed a fix for this but would like more hands on this in SNAPSHOT form before declaring it resolved.
Hide
Sean Corfield added a comment -

Tungsten's Connector defeats this fix. Even tho' the fields have an underlying mysqlType value of 16 (BOOLEAN), (.getColumnType) returns -3 (byte[] presumably) so Boolean is not forced as I had hoped.

Show
Sean Corfield added a comment - Tungsten's Connector defeats this fix. Even tho' the fields have an underlying mysqlType value of 16 (BOOLEAN), (.getColumnType) returns -3 (byte[] presumably) so Boolean is not forced as I had hoped.
Hide
Sean Corfield added a comment -

The underlying behavior is a quirk of the Tungsten Connector configuration which we believe we've successfully corrected. Given the result of (.getColumnType) is -3, I'm not sure anything could be done in code to address this, so I'm going to resolve this as invalid.

Show
Sean Corfield added a comment - The underlying behavior is a quirk of the Tungsten Connector configuration which we believe we've successfully corrected. Given the result of (.getColumnType) is -3, I'm not sure anything could be done in code to address this, so I'm going to resolve this as invalid.
Hide
Sean Corfield added a comment -

Not a code issue.

Show
Sean Corfield added a comment - Not a code issue.
Hide
Sean Corfield added a comment -

In case anyone else runs into this with Tungsten: BIT fields are handled in a version-specific way and the logic assumes three segments to the version number. Tungsten's default configuration has only two segments in the version number so the BIT handling logic barfs. The workaround is to change the Tungsten configured version to match the actual MySQL version you are proxying (e.g., 5.5.30-percona instead of 5.1-tungsten).

Show
Sean Corfield added a comment - In case anyone else runs into this with Tungsten: BIT fields are handled in a version-specific way and the logic assumes three segments to the version number. Tungsten's default configuration has only two segments in the version number so the BIT handling logic barfs. The workaround is to change the Tungsten configured version to match the actual MySQL version you are proxying (e.g., 5.5.30-percona instead of 5.1-tungsten).

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: