Getting an error when I define a custom primary ke...
# exposed
m
Getting an error when I define a custom primary key:
Copy code
e: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /home/mart/git/sites/nintendo-posts/site-backend/src/main/kotlin/com/martmists/template/backend/database/table/PostAssetTable.kt
The root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:48)
    ...

Caused by: java.lang.RuntimeException: Exception while generating code for:
FUN CLASS_STATIC_INITIALIZER name:<clinit> visibility:public/*package*/ modality:FINAL <> () returnType:kotlin.Unit
    ...

Caused by: java.lang.AssertionError: Unexpected IR element found during code generation. Either code generation for it is not implemented, or it should have been lowered:
ERROR_CALL 'Unresolved reference: R|org/jetbrains/exposed/sql/Table.primaryKey|' type=IrErrorType([Error type: Unresolved type for <error>])
	at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitElement(ExpressionCodegen.kt:946)
	at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitElement(ExpressionCodegen.kt:135)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitExpression(IrElementVisitor.kt:97)
	at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitExpression(ExpressionCodegen.kt:135)
	at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitExpression(ExpressionCodegen.kt:135)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitErrorExpression(IrElementVisitor.kt:214)
	at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitErrorExpression(ExpressionCodegen.kt:135)
	at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitErrorExpression(ExpressionCodegen.kt:135)
with code:
Copy code
package com.martmists.template.backend.database.table

import org.jetbrains.exposed.sql.Table

object PostAssetTable : Table() {
    val post = reference("post", PostTable)
    val asset = reference("asset", AssetTable)

    init {
        primaryKey = PrimaryKey(post, asset)
    }
}
Full error:
Copy code
e: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /home/mart/git/sites/nintendo-posts/site-backend/src/main/kotlin/com/martmists/template/backend/database/table/PostAssetTable.kt
The root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:48)
	at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:107)
	at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:90)
	at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:54)
	at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:41)
	at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:27)
	at org.jetbrains.kotlin.config.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:62)
	at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.invokeCodegen(JvmIrCodegenFactory.kt:371)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.runCodegen$cli(KotlinToJVMBytecodeCompiler.kt:413)
	at org.jetbrains.kotlin.cli.pipeline.jvm.JvmBackendPipelinePhase.executePhase(JvmBackendPipelinePhase.kt:98)
	at org.jetbrains.kotlin.cli.pipeline.jvm.JvmBackendPipelinePhase.executePhase(JvmBackendPipelinePhase.kt:30)
	at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:68)
	at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:58)
	at org.jetbrains.kotlin.config.phaser.SimpleNamedCompilerPhase.phaseBody(CompilerPhase.kt:215)
	at org.jetbrains.kotlin.config.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:111)
	at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:28)
	at org.jetbrains.kotlin.config.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:62)
	at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.runPhasedPipeline(AbstractCliPipeline.kt:106)
	at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.execute(AbstractCliPipeline.kt:65)
	at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecutePhased(K2JVMCompiler.kt:61)
	at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecutePhased(K2JVMCompiler.kt:36)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:80)
	at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.kt:337)
	at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:466)
	at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:75)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.doCompile(IncrementalCompilerRunner.kt:514)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:431)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:310)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:137)
	at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:678)
	at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:92)
	at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1805)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
	at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
	at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:714)
	at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.RuntimeException: Exception while generating code for:
FUN CLASS_STATIC_INITIALIZER name:<clinit> visibility:public/*package*/ modality:FINAL <> () returnType:kotlin.Unit
  BLOCK_BODY
    SET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:com.martmists.template.backend.database.table.PostAssetTable visibility:public [final,static] declared in com.martmists.template.backend.database.table.PostAssetTable' type=kotlin.Unit origin=INITIALIZE_FIELD
      value: CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in com.martmists.template.backend.database.table.PostAssetTable' type=com.martmists.template.backend.database.table.PostAssetTable origin=null
    SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:post type:org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<java.util.UUID>> visibility:private [final,static]' type=kotlin.Unit origin=INITIALIZE_FIELD
      value: TYPE_OP type=org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<java.util.UUID>> origin=IMPLICIT_CAST typeOperand=org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<java.util.UUID>>
        CALL 'public final fun reference$default <T> ($this: org.jetbrains.exposed.sql.Table, name: kotlin.String, foreign: org.jetbrains.exposed.dao.id.IdTable<T of org.jetbrains.exposed.sql.Table.reference$default>, onDelete: org.jetbrains.exposed.sql.ReferenceOption?, onUpdate: org.jetbrains.exposed.sql.ReferenceOption?, fkName: kotlin.String?, $mask0: <http://kotlin.Int|kotlin.Int>, $handler: kotlin.Any?): org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<T of org.jetbrains.exposed.sql.Table.reference$default>> declared in org.jetbrains.exposed.sql.Table' type=org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<T of org.jetbrains.exposed.sql.Table.reference$default>> origin=DEFAULT_DISPATCH_CALL
          <T>: java.util.UUID
          $this: GET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:com.martmists.template.backend.database.table.PostAssetTable visibility:public [final,static] declared in com.martmists.template.backend.database.table.PostAssetTable' type=com.martmists.template.backend.database.table.PostAssetTable origin=null
          name: CONST String type=kotlin.String value="post"
          foreign: GET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:com.martmists.template.backend.database.table.PostTable visibility:public [final,static] declared in com.martmists.template.backend.database.table.PostTable' type=com.martmists.template.backend.database.table.PostTable origin=null
          onDelete: COMPOSITE type=org.jetbrains.exposed.sql.ReferenceOption? origin=DEFAULT_VALUE
            CONST Null type=org.jetbrains.exposed.sql.ReferenceOption? value=null
          onUpdate: COMPOSITE type=org.jetbrains.exposed.sql.ReferenceOption? origin=DEFAULT_VALUE
            CONST Null type=org.jetbrains.exposed.sql.ReferenceOption? value=null
          fkName: COMPOSITE type=kotlin.String? origin=DEFAULT_VALUE
            CONST Null type=kotlin.String? value=null
          $mask0: CONST Int type=<http://kotlin.Int|kotlin.Int> value=28
          $handler: CONST Null type=kotlin.Any? value=null
    SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:asset type:org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<kotlin.Int>> visibility:private [final,static]' type=kotlin.Unit origin=INITIALIZE_FIELD
      value: TYPE_OP type=org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<kotlin.Int>> origin=IMPLICIT_CAST typeOperand=org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<kotlin.Int>>
        CALL 'public final fun reference$default <T> ($this: org.jetbrains.exposed.sql.Table, name: kotlin.String, foreign: org.jetbrains.exposed.dao.id.IdTable<T of org.jetbrains.exposed.sql.Table.reference$default>, onDelete: org.jetbrains.exposed.sql.ReferenceOption?, onUpdate: org.jetbrains.exposed.sql.ReferenceOption?, fkName: kotlin.String?, $mask0: <http://kotlin.Int|kotlin.Int>, $handler: kotlin.Any?): org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<T of org.jetbrains.exposed.sql.Table.reference$default>> declared in org.jetbrains.exposed.sql.Table' type=org.jetbrains.exposed.sql.Column<org.jetbrains.exposed.dao.id.EntityID<T of org.jetbrains.exposed.sql.Table.reference$default>> origin=DEFAULT_DISPATCH_CALL
          <T>: <http://kotlin.Int|kotlin.Int>
          $this: GET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:com.martmists.template.backend.database.table.PostAssetTable visibility:public [final,static] declared in com.martmists.template.backend.database.table.PostAssetTable' type=com.martmists.template.backend.database.table.PostAssetTable origin=null
          name: CONST String type=kotlin.String value="asset"
          foreign: GET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:com.martmists.template.backend.database.table.AssetTable visibility:public [final,static] declared in com.martmists.template.backend.database.table.AssetTable' type=com.martmists.template.backend.database.table.AssetTable origin=null
          onDelete: COMPOSITE type=org.jetbrains.exposed.sql.ReferenceOption? origin=DEFAULT_VALUE
            CONST Null type=org.jetbrains.exposed.sql.ReferenceOption? value=null
          onUpdate: COMPOSITE type=org.jetbrains.exposed.sql.ReferenceOption? origin=DEFAULT_VALUE
            CONST Null type=org.jetbrains.exposed.sql.ReferenceOption? value=null
          fkName: COMPOSITE type=kotlin.String? origin=DEFAULT_VALUE
            CONST Null type=kotlin.String? value=null
          $mask0: CONST Int type=<http://kotlin.Int|kotlin.Int> value=28
          $handler: CONST Null type=kotlin.Any? value=null
    BLOCK type=kotlin.Unit origin=SYNTHESIZED_INIT_BLOCK
      ERROR_CALL 'Unresolved reference: R|org/jetbrains/exposed/sql/Table.primaryKey|' type=IrErrorType([Error type: Unresolved type for <error>])

	at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:48)
	at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate$default(FunctionCodegen.kt:41)
	at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateMethodNode(ClassCodegen.kt:405)
	at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateMethod(ClassCodegen.kt:422)
	at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generate(ClassCodegen.kt:171)
	at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateFile$lambda$18(JvmIrCodegenFactory.kt:398)
	at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$createSimpleNamedCompilerPhase$1.phaseBody(PhaseBuilders.kt:68)
	at org.jetbrains.kotlin.config.phaser.SimpleNamedCompilerPhase.phaseBody(CompilerPhase.kt:215)
	at org.jetbrains.kotlin.config.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:111)
	at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:51)
	... 43 more
Caused by: java.lang.AssertionError: Unexpected IR element found during code generation. Either code generation for it is not implemented, or it should have been lowered:
ERROR_CALL 'Unresolved reference: R|org/jetbrains/exposed/sql/Table.primaryKey|' type=IrErrorType([Error type: Unresolved type for <error>])
	at ...