Liquibase Gradle > "Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null"

Hello,

I am getting this error in my specific case:

> Task :billing-app:diffChangelog FAILED
14:54:58.163 [main] INFO org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator -- HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
[2024-10-22 14:54:58] INFO [liquibase.ext] Using dialect io.tolgee.dialects.postgres.CustomPostgreSQLDialect
[2024-10-22 14:54:58] WARNING [liquibase.command] Ignoring the global liquibase.driver value in favor of the command value.
[2024-10-22 14:54:58] INFO [liquibase.snapshot] Creating snapshot
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table subscription_plan
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table subscription_plan
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table self_hosted_ee_subscription_plan
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table self_hosted_ee_subscription_plan
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table self_hosted_ee_subscription
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table self_hosted_ee_subscription
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table invoice
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table invoice
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table usage_event
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table usage_event
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table extra_credits_order
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table extra_credits_order
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table subscription
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table subscription
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table organization_billing_info
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table organization_billing_info
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table previous_instance_id
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table previous_instance_id
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table mt_credits_price
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table mt_credits_price
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table invoice_task
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table invoice_task
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table self_hosted_ee_subscription_plan_for_organization_ids
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table self_hosted_ee_subscription_plan_for_organization_ids
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table subscription_plan_for_organization_ids
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table subscription_plan_for_organization_ids
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table previous_instance_id
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table previous_instance_id
[2024-10-22 14:54:58] INFO [liquibase.ext] Found table subscription_plan
[2024-10-22 14:54:58] INFO [liquibase.ext] Found primary key subscription_planPK
[2024-10-22 14:54:58] INFO [liquibase.ext] Found index IDXse3opm2w57e5v0tolsj0ar5ki
[2024-10-22 14:54:58] INFO [liquibase.ext] Found column id bigint
[2024-10-22 14:54:58] INFO [liquibase.ext] Found column created_at timestamp(6)
[2024-10-22 14:54:58] INFO [liquibase.ext] Found column updated_at timestamp(6)
[2024-10-22 14:54:58] INFO [liquibase.ext] Found column translation_limit bigint
[2024-10-22 14:54:58] INFO [liquibase.ext] Found column available_until timestamp(6)
[2024-10-22 14:54:58] INFO [liquibase.ext] Found column enabled_features varchar[]
[2024-10-22 14:54:58] INFO [liquibase.command] Logging exception.
ERROR: Exception Details
[2024-10-22 14:54:58] INFO [liquibase.ui] ERROR: Exception Details
ERROR: Exception Primary Class:  NullPointerException
[2024-10-22 14:54:58] INFO [liquibase.ui] ERROR: Exception Primary Class:  NullPointerException
ERROR: Exception Primary Reason:  Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null
[2024-10-22 14:54:58] INFO [liquibase.ui] ERROR: Exception Primary Reason:  Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null
ERROR: Exception Primary Source:  PostgreSQL 13.13 (Debian 13.13-1.pgdg120+1)
[2024-10-22 14:54:58] INFO [liquibase.ui] ERROR: Exception Primary Source:  PostgreSQL 13.13 (Debian 13.13-1.pgdg120+1)
[2024-10-22 14:54:58] INFO [liquibase.command] Command execution complete
[2024-10-22 14:54:58] SEVERE [liquibase.integration] Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null
liquibase.exception.CommandExecutionException: java.lang.NullPointerException: Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null
	at liquibase.command.CommandScope.execute(CommandScope.java:258)
	at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:51)
	at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:21)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$2(LiquibaseCommandLine.java:404)
	at liquibase.Scope.child(Scope.java:200)
	at liquibase.Scope.child(Scope.java:176)
	at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:379)
	at liquibase.Scope.child(Scope.java:200)
	at liquibase.Scope.child(Scope.java:176)
	at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:376)
	at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:97)
Caused by: java.lang.NullPointerException: Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null
	at liquibase.util.SqlUtil.parseValue(SqlUtil.java:244)
	at liquibase.ext.hibernate.snapshot.ColumnSnapshotGenerator.snapshotColumn(ColumnSnapshotGenerator.java:130)
	at liquibase.ext.hibernate.snapshot.ColumnSnapshotGenerator.addTo(ColumnSnapshotGenerator.java:78)
	at liquibase.ext.hibernate.snapshot.HibernateSnapshotGenerator.snapshot(HibernateSnapshotGenerator.java:82)
	at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:60)
	at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:313)
	at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:455)
	at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:477)
	at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:368)
	at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:331)
	at liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:106)
	at liquibase.snapshot.DatabaseSnapshot.<init>(DatabaseSnapshot.java:59)
	at liquibase.snapshot.JdbcDatabaseSnapshot.<init>(JdbcDatabaseSnapshot.java:37)
	at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:214)
	at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:187)
	at liquibase.command.core.DiffCommandStep.generateDatabaseShapshot(DiffCommandStep.java:208)
	at liquibase.command.core.DiffCommandStep.createReferenceSnapshot(DiffCommandStep.java:195)
	at liquibase.command.core.DiffCommandStep.createDiffResult(DiffCommandStep.java:115)
	at liquibase.command.core.DiffCommandStep.run(DiffCommandStep.java:91)
	at liquibase.command.CommandScope.execute(CommandScope.java:220)
	... 18 more


Unexpected error running Liquibase: Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null

liquibase.exception.CommandExecutionException: java.lang.NullPointerException: Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null
	at liquibase.command.CommandScope.execute(CommandScope.java:258)
	at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:51)
	at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:21)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
Exception Details

	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
Exception Primary Class:  NullPointerException

Exception Primary Reason:  Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null

	at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
Exception Primary Source:  PostgreSQL 13.13 (Debian 13.13-1.pgdg120+1)

	at picocli.CommandLine.execute(CommandLine.java:2078)
	at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$2(LiquibaseCommandLine.java:404)
	at liquibase.Scope.child(Scope.java:200)
	at liquibase.Scope.child(Scope.java:176)
	at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:379)
	at liquibase.Scope.child(Scope.java:200)
	at liquibase.Scope.child(Scope.java:176)
	at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:376)
	at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:97)
Caused by: java.lang.NullPointerException: Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null
	at liquibase.util.SqlUtil.parseValue(SqlUtil.java:244)
	at liquibase.ext.hibernate.snapshot.ColumnSnapshotGenerator.snapshotColumn(ColumnSnapshotGenerator.java:130)
	at liquibase.ext.hibernate.snapshot.ColumnSnapshotGenerator.addTo(ColumnSnapshotGenerator.java:78)
	at liquibase.ext.hibernate.snapshot.HibernateSnapshotGenerator.snapshot(HibernateSnapshotGenerator.java:82)
	at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:60)
	at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:313)
	at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:455)
	at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:477)
	at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:368)
Caused by: java.lang.NullPointerException: Cannot invoke "liquibase.datatype.LiquibaseDataType.getName()" because "liquibaseDataType" is null

	at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:331)
	at liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:106)
	at liquibase.snapshot.DatabaseSnapshot.<init>(DatabaseSnapshot.java:59)
	at liquibase.snapshot.JdbcDatabaseSnapshot.<init>(JdbcDatabaseSnapshot.java:37)
	at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:214)
	at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:187)
	at liquibase.command.core.DiffCommandStep.generateDatabaseShapshot(DiffCommandStep.java:208)
	at liquibase.command.core.DiffCommandStep.createReferenceSnapshot(DiffCommandStep.java:195)
	at liquibase.command.core.DiffCommandStep.createDiffResult(DiffCommandStep.java:115)
	at liquibase.command.core.DiffCommandStep.run(DiffCommandStep.java:91)
	at liquibase.command.CommandScope.execute(CommandScope.java:220)
	... 18 more

I tried to debug using IntelliJ idea, but its not easy, because it’s look like liquibase is actually run using external command.

I don’t even know which field is causing this error.

I do suspect this one with custom type (io.hypersistence.utils.hibernate.type.array.EnumArrayType)

  @Type(
    EnumArrayType::class,
    parameters = [
      Parameter(
        name = EnumArrayType.SQL_ARRAY_TYPE,
        value = "varchar",
      ),
    ],
  )
  @ColumnDefault("ARRAY[]::varchar[]")
  @Column(name = "enabled_features", columnDefinition = "varchar[]")
  override var enabledFeatures: Array<Feature> = arrayOf(),

I only get the error for separate “billing” module. However, for other modules, very similar custom types work correctly.

Can anyone point me to the right direction?