Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MariaDB Connector 3.x results in "class [B cannot be cast to class java.lang.String" #2431

Closed
adangel opened this issue Jan 27, 2022 · 11 comments

Comments

@adangel
Copy link
Contributor

adangel commented Jan 27, 2022

Environment

Liquibase Version: 4.7.1

Liquibase Integration & Version: maven

Liquibase Extension(s) & Version: liquibase-percona 4.8.1-SNAPSHOT

Database Vendor & Version: MariaDB 10 + MariaDB Connector < 3.0.4

Operating System Type & Version: Linux

Description

In the liquibase-percona extension I use the snapshot feature (SnapshotGeneratorFactory.getInstance().createSnapshot(...)) to determine existing foreign keys of a table.

With MariaDB Connector 3.0.3 this results in an "java.lang.IllegalArgumentException: Unexpected datatype NULL".
The same problem is also described at https://forum.liquibase.org/t/fresh-install-giving-unusual-unexpected-datatype-null/6170

Here's the full stacktrace
       liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
            Reason: java.lang.IllegalArgumentException: Unexpected datatype NULL
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
           at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
           at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
           at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
           at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
           at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
           at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
           at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke (Method.java:566)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
           at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
           at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
       Caused by: org.apache.maven.plugin.MojoExecutionException: 
       Error setting up or running Liquibase:
       liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
            Reason: java.lang.IllegalArgumentException: Unexpected datatype NULL
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:491)
           at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
           at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
           at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
           at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
           at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
           at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
           at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
           at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke (Method.java:566)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
           at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
           at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
       Caused by: org.apache.maven.plugin.MojoExecutionException: 
       Error setting up or running Liquibase:
       liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
            Reason: java.lang.IllegalArgumentException: Unexpected datatype NULL
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:482)
           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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
           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.Scope.child (Scope.java:243)
           at liquibase.Scope.child (Scope.java:247)
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
           at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
           at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
           at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
           at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
           at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
           at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
           at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
           at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke (Method.java:566)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
           at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
           at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
       Caused by: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
            Reason: java.lang.IllegalArgumentException: Unexpected datatype NULL
           at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:124)
           at liquibase.Liquibase.lambda$null$0 (Liquibase.java:265)
           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.Scope.child (Scope.java:243)
           at liquibase.Liquibase.lambda$update$1 (Liquibase.java:264)
           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 liquibase.Liquibase.update (Liquibase.java:584)
           at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate (LiquibaseUpdate.java:35)
           at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask (AbstractLiquibaseUpdateMojo.java:32)
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:479)
           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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
           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.Scope.child (Scope.java:243)
           at liquibase.Scope.child (Scope.java:247)
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
           at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
           at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
           at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
           at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
           at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
           at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
           at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
           at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke (Method.java:566)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
           at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
           at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
       Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
            Reason: java.lang.IllegalArgumentException: Unexpected datatype NULL
           at liquibase.changelog.ChangeSet.execute (ChangeSet.java:695)
           at liquibase.changelog.visitor.UpdateVisitor.visit (UpdateVisitor.java:56)
           at liquibase.changelog.ChangeLogIterator$2.lambda$null$0 (ChangeLogIterator.java:111)
           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.changelog.ChangeLogIterator$2.lambda$run$1 (ChangeLogIterator.java:110)
           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.Scope.child (Scope.java:243)
           at liquibase.changelog.ChangeLogIterator$2.run (ChangeLogIterator.java:94)
           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.Scope.child (Scope.java:243)
           at liquibase.Scope.child (Scope.java:247)
           at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:66)
           at liquibase.Liquibase.lambda$null$0 (Liquibase.java:265)
           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.Scope.child (Scope.java:243)
           at liquibase.Liquibase.lambda$update$1 (Liquibase.java:264)
           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 liquibase.Liquibase.update (Liquibase.java:584)
           at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate (LiquibaseUpdate.java:35)
           at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask (AbstractLiquibaseUpdateMojo.java:32)
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:479)
           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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
           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.Scope.child (Scope.java:243)
           at liquibase.Scope.child (Scope.java:247)
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
           at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
           at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
           at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
           at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
           at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
           at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
           at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
           at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke (Method.java:566)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
           at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
           at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
       Caused by: 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.createSnapshot (SnapshotGeneratorFactory.java:228)
           at liquibase.ext.percona.PerconaConstraintsService.findForeignKey (PerconaConstraintsService.java:79)
           at liquibase.ext.percona.PerconaConstraintsService.determineCurrentConstraintName (PerconaConstraintsService.java:66)
           at liquibase.ext.percona.PerconaDropForeignKeyConstraintChange.generateAlterStatement (PerconaDropForeignKeyConstraintChange.java:59)
           at liquibase.ext.percona.PerconaChangeUtil.generateStatements (PerconaChangeUtil.java:99)
           at liquibase.ext.percona.PerconaDropForeignKeyConstraintChange.generateStatements (PerconaDropForeignKeyConstraintChange.java:50)
           at liquibase.change.AbstractChange.generateStatementsVolatile (AbstractChange.java:297)
           at liquibase.changelog.ChangeSet.execute (ChangeSet.java:655)
           at liquibase.changelog.visitor.UpdateVisitor.visit (UpdateVisitor.java:56)
           at liquibase.changelog.ChangeLogIterator$2.lambda$null$0 (ChangeLogIterator.java:111)
           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.changelog.ChangeLogIterator$2.lambda$run$1 (ChangeLogIterator.java:110)
           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.Scope.child (Scope.java:243)
           at liquibase.changelog.ChangeLogIterator$2.run (ChangeLogIterator.java:94)
           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.Scope.child (Scope.java:243)
           at liquibase.Scope.child (Scope.java:247)
           at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:66)
           at liquibase.Liquibase.lambda$null$0 (Liquibase.java:265)
           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.Scope.child (Scope.java:243)
           at liquibase.Liquibase.lambda$update$1 (Liquibase.java:264)
           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 liquibase.Liquibase.update (Liquibase.java:584)
           at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate (LiquibaseUpdate.java:35)
           at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask (AbstractLiquibaseUpdateMojo.java:32)
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:479)
           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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
           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.Scope.child (Scope.java:243)
           at liquibase.Scope.child (Scope.java:247)
           at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
           at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
           at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
           at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
           at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
           at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
           at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
           at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
           at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
           at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
           at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
           at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke (Method.java:566)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
           at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
           at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
           at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

This is the query, that is being executed by liquibase:

SELECT TABLE_SCHEMA TABLE_CAT, NULL  TABLE_SCHEM,  TABLE_NAME, IF(TABLE_TYPE='BASE TABLE' or TABLE_TYPE='SYSTEM VERSIONED', 'TABLE', TABLE_TYPE) as TABLE_TYPE, TABLE_COMMENT REMARKS, NULL TYPE_CAT, NULL TYPE_SCHEM, NULL TYPE_NAME, NULL SELF_REFERENCING_COL_NAME,  NULL REF_GENERATION

FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='testdb' AND TABLE_NAME='address' AND TABLE_TYPE IN ('BASE TABLE','SYSTEM VERSIONED') ORDER BY TABLE_TYPE, TABLE_SCHEMA, TABLE_NAME

Steps To Reproduce

This shows up an an integration test that uses the "dropForeignKeyConstraint" change together with liquibase-percona.
See liquibase/liquibase-percona#180 and the build logs there.
The integration test is this: https://github.com/liquibase/liquibase-percona/tree/main/src/it/allChangesLiquibaseMariaDB just run with MariaDB Connecto 3.0.3 instead of 2.7.5.

Actual Behavior

  • java.lang.IllegalArgumentException: Unexpected datatype NULL

Expected/Desired Behavior

  • no exception
@famod
Copy link
Contributor

famod commented Feb 2, 2022

Also happens with current Quarkus main, without percona:

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)
        [...]

@famod
Copy link
Contributor

famod commented Feb 3, 2022

Issue created over at MariaDB Jira: https://jira.mariadb.org/browse/CONJ-924

@famod
Copy link
Contributor

famod commented Feb 10, 2022

https://jira.mariadb.org/browse/CONJ-924 was fixed in MariaDB Connector/J, in yet to be released version 3.0.4.

@kataggart This issue should be closed. (haven't tested it yet, though)

@adangel
Copy link
Contributor Author

adangel commented Feb 10, 2022

@famod Thanks for the update on this issue.

I've tested my use case now with 3.0.4-SNAPSHOT of maria db connector, but now I get another exception. This time, it seems to origin in liquibase itself:

Caused by: java.lang.ClassCastException: class [B cannot be cast to class java.lang.String ([B and java.lang.String are in module java.base of loader 'bootstrap')
    at liquibase.snapshot.jvm.ColumnSnapshotGenerator.readDataType (ColumnSnapshotGenerator.java:468)
    at liquibase.snapshot.jvm.ColumnSnapshotGenerator.readColumn (ColumnSnapshotGenerator.java:391)
    at liquibase.snapshot.jvm.ColumnSnapshotGenerator.addTo (ColumnSnapshotGenerator.java:204)
    at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot (JdbcSnapshotGenerator.java:79)
    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.createSnapshot (SnapshotGeneratorFactory.java:228)
    at liquibase.ext.percona.PerconaConstraintsService.findForeignKey (PerconaConstraintsService.java:79)
...
full stacktrace
Error setting up or running Liquibase:
liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
     Reason: java.lang.ClassCastException: class [B cannot be cast to class java.lang.String ([B and java.lang.String are in module java.base of loader 'bootstrap')
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:482)
    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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
    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.Scope.child (Scope.java:243)
    at liquibase.Scope.child (Scope.java:247)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
     Reason: java.lang.ClassCastException: class [B cannot be cast to class java.lang.String ([B and java.lang.String are in module java.base of loader 'bootstrap')
    at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:124)
    at liquibase.Liquibase.lambda$null$0 (Liquibase.java:265)
    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.Scope.child (Scope.java:243)
    at liquibase.Liquibase.lambda$update$1 (Liquibase.java:264)
    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 liquibase.Liquibase.update (Liquibase.java:584)
    at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate (LiquibaseUpdate.java:35)
    at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask (AbstractLiquibaseUpdateMojo.java:32)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:479)
    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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
    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.Scope.child (Scope.java:243)
    at liquibase.Scope.child (Scope.java:247)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set test-changelog.xml::9::Alice:
     Reason: java.lang.ClassCastException: class [B cannot be cast to class java.lang.String ([B and java.lang.String are in module java.base of loader 'bootstrap')
    at liquibase.changelog.ChangeSet.execute (ChangeSet.java:695)
    at liquibase.changelog.visitor.UpdateVisitor.visit (UpdateVisitor.java:56)
    at liquibase.changelog.ChangeLogIterator$2.lambda$null$0 (ChangeLogIterator.java:111)
    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.changelog.ChangeLogIterator$2.lambda$run$1 (ChangeLogIterator.java:110)
    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.Scope.child (Scope.java:243)
    at liquibase.changelog.ChangeLogIterator$2.run (ChangeLogIterator.java:94)
    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.Scope.child (Scope.java:243)
    at liquibase.Scope.child (Scope.java:247)
    at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:66)
    at liquibase.Liquibase.lambda$null$0 (Liquibase.java:265)
    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.Scope.child (Scope.java:243)
    at liquibase.Liquibase.lambda$update$1 (Liquibase.java:264)
    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 liquibase.Liquibase.update (Liquibase.java:584)
    at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate (LiquibaseUpdate.java:35)
    at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask (AbstractLiquibaseUpdateMojo.java:32)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:479)
    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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
    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.Scope.child (Scope.java:243)
    at liquibase.Scope.child (Scope.java:247)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.ClassCastException: class [B cannot be cast to class java.lang.String ([B and java.lang.String are in module java.base of loader 'bootstrap')
    at liquibase.snapshot.jvm.ColumnSnapshotGenerator.readDataType (ColumnSnapshotGenerator.java:468)
    at liquibase.snapshot.jvm.ColumnSnapshotGenerator.readColumn (ColumnSnapshotGenerator.java:391)
    at liquibase.snapshot.jvm.ColumnSnapshotGenerator.addTo (ColumnSnapshotGenerator.java:204)
    at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot (JdbcSnapshotGenerator.java:79)
    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.createSnapshot (SnapshotGeneratorFactory.java:228)
    at liquibase.ext.percona.PerconaConstraintsService.findForeignKey (PerconaConstraintsService.java:79)
    at liquibase.ext.percona.PerconaConstraintsService.determineCurrentConstraintName (PerconaConstraintsService.java:66)
    at liquibase.ext.percona.PerconaDropForeignKeyConstraintChange.generateAlterStatement (PerconaDropForeignKeyConstraintChange.java:59)
    at liquibase.ext.percona.PerconaChangeUtil.generateStatements (PerconaChangeUtil.java:99)
    at liquibase.ext.percona.PerconaDropForeignKeyConstraintChange.generateStatements (PerconaDropForeignKeyConstraintChange.java:50)
    at liquibase.change.AbstractChange.generateStatementsVolatile (AbstractChange.java:297)
    at liquibase.changelog.ChangeSet.execute (ChangeSet.java:655)
    at liquibase.changelog.visitor.UpdateVisitor.visit (UpdateVisitor.java:56)
    at liquibase.changelog.ChangeLogIterator$2.lambda$null$0 (ChangeLogIterator.java:111)
    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.changelog.ChangeLogIterator$2.lambda$run$1 (ChangeLogIterator.java:110)
    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.Scope.child (Scope.java:243)
    at liquibase.changelog.ChangeLogIterator$2.run (ChangeLogIterator.java:94)
    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.Scope.child (Scope.java:243)
    at liquibase.Scope.child (Scope.java:247)
    at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:66)
    at liquibase.Liquibase.lambda$null$0 (Liquibase.java:265)
    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.Scope.child (Scope.java:243)
    at liquibase.Liquibase.lambda$update$1 (Liquibase.java:264)
    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 liquibase.Liquibase.update (Liquibase.java:584)
    at org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate (LiquibaseUpdate.java:35)
    at org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask (AbstractLiquibaseUpdateMojo.java:32)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:479)
    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 org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:410)
    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.Scope.child (Scope.java:243)
    at liquibase.Scope.child (Scope.java:247)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:347)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

So, there is something wrong - MariaDB connector doesn't return a String anymore....

String columnTypeName = (String) columnMetadataResultSet.get("TYPE_NAME");

@famod
Copy link
Contributor

famod commented Feb 10, 2022

[B is a byte array. That's odd. Best report it over at https://jira.mariadb.org/projects/CONJ

@adangel adangel changed the title MariaDB Connector 3.x results in "Unexpected datatype NULL" MariaDB Connector 3.x results in "class [B cannot be cast to class java.lang.String" Feb 24, 2022
@adangel
Copy link
Contributor Author

adangel commented Feb 24, 2022

So, the first error (Unexpected datatype NULL) has been fixed with CONJ-924
For the new error (class [B cannot be cast to class java.lang.String) see CONJ-935

@kataggart
Copy link
Contributor

@adangel can you confirm that we are good to close this issue on this end? If I follow the history correctly here, it looks like it's resolved now?

Thanks!

@kataggart kataggart added this to To Do in Conditioning++ via automation Mar 7, 2022
@kataggart kataggart self-assigned this Mar 7, 2022
@adangel
Copy link
Contributor Author

adangel commented Mar 10, 2022

I'd rather wait, until MariaDB Connector/J version 3.0.4 is released.
https://search.maven.org/artifact/org.mariadb.jdbc/mariadb-java-client

@adangel
Copy link
Contributor Author

adangel commented Mar 28, 2022

@kataggart The new release of mariadb connector/j is available now: https://github.com/mariadb-corporation/mariadb-connector-j/releases/tag/3.0.4

The problems with liquibase appear to be fixed now, so I'm closing this issue.

@adangel adangel closed this as completed Mar 28, 2022
Conditioning++ automation moved this from To Do to Done Mar 28, 2022
@kataggart
Copy link
Contributor

Excellent thanks @adangel !

@neekfenwick
Copy link

The problems with liquibase appear to be fixed now, so I'm closing this issue.

Just to confirm, I raised the original issue on the Liquibase forum that led to this ticket, I have built the new mariadb connector/j 3.0.4 and tested it against my database, it has fixed the "Unexpected datatype NULL" error, and also schema browsing in SquirrelSQL works. Thank you for all the work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

No branches or pull requests

4 participants