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

Doesn't compile in native mode with GraalVM 22.1 #73

Open
luneo7 opened this issue May 30, 2022 · 4 comments · May be fixed by #76
Open

Doesn't compile in native mode with GraalVM 22.1 #73

luneo7 opened this issue May 30, 2022 · 4 comments · May be fixed by #76

Comments

@luneo7
Copy link

luneo7 commented May 30, 2022

GraalVM 22.1 introduced --link-at-build-time and Quarkus 2.9.2.Final enforces its use unless you use the dreprecated NativeImageAllowIncompleteClasspathBuildItem to disable that feature.

jOOQ has incomplete class path (optional dependencies) that causes the build to fail if linked at build time, we should either add a NativeImageAllowIncompleteClasspathBuildItem so we can do native image with jOOQ, and/or fix jOOQ upstream so DB utils are in a separated lib that needs to be imported if using the desired DB.

This is the stack trace of trying to build jOOQ in GraalVM 22.1

Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:242)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(YearToMonth): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:242)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.sqlInline0(DefaultBinding.java:4770)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.sqlInline0(DefaultBinding.java:4751)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:227)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(YearToSecond): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:227)
        at org.jooq.impl.DefaultBinding$DefaultYearToSecondBinding.sqlInline0(DefaultBinding.java:4689)
        at org.jooq.impl.DefaultBinding$DefaultYearToSecondBinding.sqlInline0(DefaultBinding.java:4671)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toYearToMonth(PostgresUtils.java:351)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toYearToMonth(Object): 
        at org.jooq.util.postgres.PostgresUtils.toYearToMonth(PostgresUtils.java:349)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.get0(DefaultBinding.java:4800)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.get0(DefaultBinding.java:4751)
        at org.jooq.impl.DefaultBinding$AbstractBinding.get(DefaultBinding.java:947)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.setValue(CursorImpl.java:1558)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1507)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1466)
        at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:143)
        at org.jooq.impl.CursorImpl$CursorIterator.fetchNext(CursorImpl.java:1431)
        at org.jooq.impl.CursorImpl$CursorIterator.hasNext(CursorImpl.java:1407)
        at java.util.AbstractMap.toString(AbstractMap.java:545)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)

com.oracle.svm.core.util.UserError$UserException: Unsupported features in 5 methods
Detailed message:
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toDayToSecond(PostgresUtils.java:301)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toDayToSecond(Object): 
        at org.jooq.util.postgres.PostgresUtils.toDayToSecond(PostgresUtils.java:299)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.get0(DefaultBinding.java:2317)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.get0(DefaultBinding.java:2268)
        at org.jooq.impl.DefaultBinding$AbstractBinding.get(DefaultBinding.java:947)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.setValue(CursorImpl.java:1558)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1507)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1466)
        at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:143)
        at org.jooq.impl.CursorImpl$CursorIterator.fetchNext(CursorImpl.java:1431)
        at org.jooq.impl.CursorImpl$CursorIterator.hasNext(CursorImpl.java:1407)
        at java.util.AbstractMap.toString(AbstractMap.java:545)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:214)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(DayToSecond): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:214)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.sqlInline0(DefaultBinding.java:2287)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.sqlInline0(DefaultBinding.java:2268)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:242)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(YearToMonth): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:242)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.sqlInline0(DefaultBinding.java:4770)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.sqlInline0(DefaultBinding.java:4751)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:227)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(YearToSecond): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:227)
        at org.jooq.impl.DefaultBinding$DefaultYearToSecondBinding.sqlInline0(DefaultBinding.java:4689)
        at org.jooq.impl.DefaultBinding$DefaultYearToSecondBinding.sqlInline0(DefaultBinding.java:4671)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toYearToMonth(PostgresUtils.java:351)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toYearToMonth(Object): 
        at org.jooq.util.postgres.PostgresUtils.toYearToMonth(PostgresUtils.java:349)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.get0(DefaultBinding.java:4800)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.get0(DefaultBinding.java:4751)
        at org.jooq.impl.DefaultBinding$AbstractBinding.get(DefaultBinding.java:947)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.setValue(CursorImpl.java:1558)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1507)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1466)
        at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:143)
        at org.jooq.impl.CursorImpl$CursorIterator.fetchNext(CursorImpl.java:1431)
        at org.jooq.impl.CursorImpl$CursorIterator.hasNext(CursorImpl.java:1407)
        at java.util.AbstractMap.toString(AbstractMap.java:545)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)

        at com.oracle.svm.core.util.UserError.abort(UserError.java:84)
        at com.oracle.svm.hosted.FallbackFeature.reportAsFallback(FallbackFeature.java:249)
        at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:754)
        at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:558)
        at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:515)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:407)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:585)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:615)
Caused by: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Unsupported features in 5 methods
Detailed message:
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toDayToSecond(PostgresUtils.java:301)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toDayToSecond(Object): 
        at org.jooq.util.postgres.PostgresUtils.toDayToSecond(PostgresUtils.java:299)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.get0(DefaultBinding.java:2317)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.get0(DefaultBinding.java:2268)
        at org.jooq.impl.DefaultBinding$AbstractBinding.get(DefaultBinding.java:947)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.setValue(CursorImpl.java:1558)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1507)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1466)
        at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:143)
        at org.jooq.impl.CursorImpl$CursorIterator.fetchNext(CursorImpl.java:1431)
        at org.jooq.impl.CursorImpl$CursorIterator.hasNext(CursorImpl.java:1407)
        at java.util.AbstractMap.toString(AbstractMap.java:545)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:214)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(DayToSecond): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:214)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.sqlInline0(DefaultBinding.java:2287)
        at org.jooq.impl.DefaultBinding$DefaultDayToSecondBinding.sqlInline0(DefaultBinding.java:2268)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:242)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(YearToMonth): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:242)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.sqlInline0(DefaultBinding.java:4770)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.sqlInline0(DefaultBinding.java:4751)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:227)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toPGInterval(YearToSecond): 
        at org.jooq.util.postgres.PostgresUtils.toPGInterval(PostgresUtils.java:227)
        at org.jooq.impl.DefaultBinding$DefaultYearToSecondBinding.sqlInline0(DefaultBinding.java:4689)
        at org.jooq.impl.DefaultBinding$DefaultYearToSecondBinding.sqlInline0(DefaultBinding.java:4671)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:887)
        at org.jooq.impl.DefaultBinding$AbstractBinding.sql(DefaultBinding.java:879)
        at org.jooq.impl.Val.accept(Val.java:182)
        at org.jooq.impl.DefaultRenderContext.visit0(DefaultRenderContext.java:720)
        at org.jooq.impl.AbstractContext.visit(AbstractContext.java:264)
        at org.jooq.impl.DefaultDSLContext.renderInlined(DefaultDSLContext.java:724)
        at org.jooq.impl.AbstractQueryPart.toString(AbstractQueryPart.java:196)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.postgresql.util.PGInterval. This error is reported at image build time because class org.jooq.util.postgres.PostgresUtils is registered for linking at image build time by command line
Trace: 
        at parsing org.jooq.util.postgres.PostgresUtils.toYearToMonth(PostgresUtils.java:351)
Call path from entry point to org.jooq.util.postgres.PostgresUtils.toYearToMonth(Object): 
        at org.jooq.util.postgres.PostgresUtils.toYearToMonth(PostgresUtils.java:349)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.get0(DefaultBinding.java:4800)
        at org.jooq.impl.DefaultBinding$DefaultYearToMonthBinding.get0(DefaultBinding.java:4751)
        at org.jooq.impl.DefaultBinding$AbstractBinding.get(DefaultBinding.java:947)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.setValue(CursorImpl.java:1558)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1507)
        at org.jooq.impl.CursorImpl$CursorIterator$CursorRecordInitialiser.apply(CursorImpl.java:1466)
        at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:143)
        at org.jooq.impl.CursorImpl$CursorIterator.fetchNext(CursorImpl.java:1431)
        at org.jooq.impl.CursorImpl$CursorIterator.hasNext(CursorImpl.java:1407)
        at java.util.AbstractMap.toString(AbstractMap.java:545)
        at java.lang.String.valueOf(String.java:2951)
        at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:848)
        at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)

        at com.oracle.graal.pointsto.constraints.UnsupportedFeatures.report(UnsupportedFeatures.java:129)
        at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:751)
        ... 6 more

@lukaseder
Copy link

and/or fix jOOQ upstream so DB utils are in a separated lib that needs to be imported if using the desired DB.

Regarding this particular problem, the dependency on pgjdbc has been removed again in jOOQ 3.17 via shading of this particular class, see jOOQ/jOOQ#13053

Obviously, preventing such issues by building jOOQ for GraalVM as well would be better. It will happen in the future, not sure when: jOOQ/jOOQ#8779

@zakkak
Copy link

zakkak commented Jun 20, 2022

we should either add a NativeImageAllowIncompleteClasspathBuildItem so we can do native image with jOOQ

Another way would be to include substitutions in the jOOQ extension that will explicitly make the optional dependencies unreachable.

and/or fix jOOQ upstream so DB utils are in a separated lib that needs to be imported if using the desired DB.

That would be the best things to do.

@luneo7 luneo7 linked a pull request Jun 21, 2022 that will close this issue
@luneo7
Copy link
Author

luneo7 commented Jun 21, 2022

@lukaseder found another issue when trying to use jOOQ 3.16.x that uses Jakarta... Jakarta is listed as provided, but the references are there... for instance in checks if Jakarta is present by using an imported class instead of using a string as class name... and there are other places... if Jakarta is required, it shouldn't be listed as provided in the pom... or the code should be refactored... if doing graalvm substitution for this one, will have to create a large one

@lukaseder
Copy link

@luneo7 from the specs: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

provided
This is much like compile, but indicates you expect the JDK or a container to provide the dependency at runtime. For example, when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. A dependency with this scope is added to the classpath used for compilation and test, but not the runtime classpath. It is not transitive.

Seems like we're doing everything right.

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

Successfully merging a pull request may close this issue.

3 participants