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

NPE "Error while fetching indexes" while generating code for function based indexes #6620

Closed
JanecekPetr opened this issue Sep 29, 2017 · 13 comments

Comments

@JanecekPetr
Copy link

Expected behavior and actual behavior:

While generating jOOQ code with the new 3.10, an error shows up the Maven output. The build succeeds, though, and code is generated (?!).

[INFO] Generating table         : Something.java [input=something, output=something, pk=something_pkey]
[ERROR] Error while fetching indexes
java.lang.NullPointerException
	at org.jooq.util.DefaultIndexColumnDefinition.<init>(DefaultIndexColumnDefinition.java:51)
	at org.jooq.util.postgres.PostgresDatabase$1.<init>(PostgresDatabase.java:196)
	at org.jooq.util.postgres.PostgresDatabase.getIndexes0(PostgresDatabase.java:183)
	at org.jooq.util.AbstractDatabase.getIndexes(AbstractDatabase.java:1719)
	at org.jooq.util.AbstractDatabase.getIndexes(AbstractDatabase.java:1752)
	at org.jooq.util.AbstractTableDefinition.getIndexes(AbstractTableDefinition.java:84)
	at org.jooq.util.JavaGenerator.generateTable(JavaGenerator.java:3679)
	at org.jooq.util.JavaGenerator.generateTable(JavaGenerator.java:3514)
	at org.jooq.util.JavaGenerator.generateTables(JavaGenerator.java:3501)
	at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:449)
	at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:403)
	at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:325)
	at org.jooq.util.GenerationTool.run(GenerationTool.java:639)
	at org.jooq.util.GenerationTool.generate(GenerationTool.java:200)
	at org.jooq.util.maven.Plugin.execute(Plugin.java:189)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
	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:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

Steps to reproduce the problem:

Run the jooq-codegen-maven.

Versions:

  • jOOQ: 3.10
  • Database (include vendor): PostgreSQL 9.5
  • JDBC Driver (include name if inofficial driver): org.postgresql.Driver
@JanecekPetr JanecekPetr changed the title NPE "Error while fetching indexes" while generating code from Postgres NPE "Error while fetching indexes" while generating code from Postgres with 3.10 Sep 29, 2017
@lukaseder lukaseder added this to the Version 3.11.0 milestone Sep 29, 2017
@lukaseder
Copy link
Member

That was quick - the release of 3.10 has not even been announced yet :)

Thanks for your report. How can this be reproduced? Is there any specific index configuration that you have?

@lukaseder
Copy link
Member

Side-note: If there is any exception in any part of jOOQ-meta, we'll just skip that part (e.g. finding indexes), as the rest of the code generation output might still be useful.

@JanecekPetr
Copy link
Author

JanecekPetr commented Sep 29, 2017

Yes, I was now able to isolate the error to this:

CREATE TABLE something (
    something_id SERIAL PRIMARY KEY,
    something_value TEXT NOT NULL
);

CREATE INDEX something_value_idx ON something (lower(something_value));

(note the index on lower(...) - without it it succeeds)

@lukaseder
Copy link
Member

Oh, interesting, a function based index. Thanks for the pointer. I can reproduce it now. Will fix ASAP!

@lukaseder lukaseder changed the title NPE "Error while fetching indexes" while generating code from Postgres with 3.10 NPE "Error while fetching indexes" while generating code for PostgreSQL function based index Sep 29, 2017
@JanecekPetr
Copy link
Author

JanecekPetr commented Sep 29, 2017

You're welcome. We've just today been rewriting some queries to run on Postgres 9.3+ instead of just 9.5+ and I was hoping some of the incoming INSERT ... ON CONFLICT DO goodness would help us. No luck :(. At least I could help you. As always, thanks for your product and your support!

@lukaseder
Copy link
Member

But ON CONFLICT was only introduced in PostgreSQL 9.5...?

@lukaseder
Copy link
Member

lukaseder commented Sep 29, 2017

This issue is related to #6310 (Add support for function-based indexes in code generator)

@lukaseder lukaseder changed the title NPE "Error while fetching indexes" while generating code for PostgreSQL function based index NPE "Error while fetching indexes" while generating code for function based indexes Sep 29, 2017
@lukaseder
Copy link
Member

In fact, this isn't PostgreSQL specific

@JanecekPetr
Copy link
Author

But ON CONFLICT was only introduced in PostgreSQL 9.5...?

Yeah, exactly. 9.3 gets some emulation instead (the rest of the queries we're rewriting, what a pain), and there I was hoping for a change :).

@lukaseder
Copy link
Member

Would you mind creating a new issue, though? It's not related to this NPE

@lukaseder
Copy link
Member

Thanks again for reporting this. We'll release 3.10.1 soon with a fix (#6624)

@lukaseder
Copy link
Member

The fix for this issue has now been released in 3.10.1

@lukaseder
Copy link
Member

Related problem (Oracle only): #7824

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

No branches or pull requests

2 participants