[CONJ-924] "Unexpected datatype NULL" in ColumnDefinitionPacket.getDefaultCodec() Created: 2022-02-03  Updated: 2022-03-11  Resolved: 2022-02-10

Status: Closed
Project: MariaDB Connector/J
Component/s: Other
Affects Version/s: 3.0.3
Fix Version/s: 3.0.4

Type: Bug Priority: Major
Reporter: Falko Modler Assignee: Diego Dupin
Resolution: Fixed Votes: 0
Labels: None


 Description   

This problem was reported for Liquibase: https://github.com/liquibase/liquibase/issues/2431#issue-1116123555

I ran into that myself via Quarkus: https://github.com/liquibase/liquibase/issues/2431#issuecomment-1028363583

java.lang.IllegalArgumentException: Unexpected datatype NULL
        at org.mariadb.jdbc.message.server.ColumnDefinitionPacket.getDefaultCodec(ColumnDefinitionPacket.java:396)
        at org.mariadb.jdbc.client.result.Result.getObject(Result.java:601)
        at liquibase.util.JdbcUtil.getResultSetValue(JdbcUtil.java:80)
        at liquibase.executor.jvm.ColumnMapRowMapper.getColumnValue(ColumnMapRowMapper.java:72)
        at liquibase.snapshot.ResultSetCache$ResultSetExtractor$1.getColumnValue(ResultSetCache.java:320)
        at liquibase.executor.jvm.ColumnMapRowMapper.mapRow(ColumnMapRowMapper.java:34)
        at liquibase.executor.jvm.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:72)
        at liquibase.snapshot.ResultSetCache$ResultSetExtractor.extract(ResultSetCache.java:343)
        at liquibase.snapshot.ResultSetCache$ResultSetExtractor.extract(ResultSetCache.java:308)
        at liquibase.snapshot.JdbcDatabaseSnapshot$CachingDatabaseMetaData$2.fastFetchQuery(JdbcDatabaseSnapshot.java:1032)
        at liquibase.snapshot.ResultSetCache$SingleResultSetExtractor.fastFetch(ResultSetCache.java:367)
        at liquibase.snapshot.ResultSetCache.get(ResultSetCache.java:72)
        at liquibase.snapshot.JdbcDatabaseSnapshot$CachingDatabaseMetaData.getTables(JdbcDatabaseSnapshot.java:989)
        at liquibase.snapshot.jvm.TableSnapshotGenerator.snapshotObject(TableSnapshotGenerator.java:34)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:66)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:312)
        at liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:105)
        at liquibase.snapshot.DatabaseSnapshot.<init>(DatabaseSnapshot.java:58)
        at liquibase.snapshot.JdbcDatabaseSnapshot.<init>(JdbcDatabaseSnapshot.java:34)
        at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:215)
        at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:244)
        at liquibase.snapshot.SnapshotGeneratorFactory.getDatabaseChangeLogTable(SnapshotGeneratorFactory.java:252)
        at liquibase.changelog.StandardChangeLogHistoryService.init(StandardChangeLogHistoryService.java:109)
        at liquibase.Liquibase.checkLiquibaseTables(Liquibase.java:1913)
        at liquibase.Liquibase.lambda$update$1(Liquibase.java:226)
        at liquibase.Scope.lambda$child$0(Scope.java:180)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.Scope.child(Scope.java:158)
        at liquibase.Liquibase.runInScope(Liquibase.java:2405)
        at liquibase.Liquibase.update(Liquibase.java:211)
        at liquibase.Liquibase.update(Liquibase.java:197)
        at io.quarkus.liquibase.runtime.LiquibaseRecorder.doStartActions(LiquibaseRecorder.java:64)
        [...]

But to me it seems it's more of a regression in MariaDB Connector/J, because Result.getObject() shouldn't just fail like that.



 Comments   
Comment by Diego Dupin [ 2022-02-10 ]

NULL column (like in "SELECT NULL myAlias") possible throw an result java.lang.IllegalArgumentException: Unexpected datatype NULL.

this is corrected by https://github.com/mariadb-corporation/mariadb-connector-j/commit/eda075849e264b77db9ca18279f03dca5b77efe6 with tests associated (will be released in 3.0.4)

correction is available through snapshot :

 
<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>
</repositories>
 
<dependencies>
    <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>3.0.4-SNAPSHOT</version>
    </dependency>
</dependencies>

Comment by Falko Modler [ 2022-02-10 ]

Thanks! I'll try to find some time to test the snapshot.

Do you have an ETA for 3.0.4?

Comment by Diego Dupin [ 2022-02-14 ]

no exact date for now, but release will occurs before the end of the month.

Comment by John Bedalov [ 2022-03-11 ]

Any ETA on the release? The previous comment implies it would be ready about 10 days ago.

Generated at Thu Feb 08 03:19:19 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.