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

Oracle Database 11g: Column SEARCH_CONDITION_VC does not exist in table SYS.ALL_CONSTRAINTS #9935

Closed
ThoSap opened this issue Mar 11, 2020 · 4 comments

Comments

@ThoSap
Copy link

ThoSap commented Mar 11, 2020

Expected behavior and actual behavior:

Column SEARCH_CONDITION_VC does not exist in table SYS.ALL_CONSTRAINTS on RDMS Oracle Database 11g

Because of that the loading of check constraints fails during the jOOQ Code generation.
https://support.oracle.com/knowledge/More%20Applications%20and%20Technologies/2466572_1.html

[WARNING] SQL exception            : Exception while executing meta query: ORA-00904: "AC"."SEARCH_CONDITION_VC": ungültiger Bezeichner

sql
select 
  ac.OWNER, 
  ac.TABLE_NAME, 
  ac.CONSTRAINT_NAME, 
  ac.SEARCH_CONDITION
from SYS.ALL_CONSTRAINTS ac
where (
  ac.CONSTRAINT_TYPE = 'C'
  and ac.OWNER in (
    'MDC', 'GPM', 'MASTER'
  )
  and (
    ac.GENERATED <> 'GENERATED NAME'
    or ac.SEARCH_CONDITION_VC not in (
      select (('"' || atc.COLUMN_NAME) || '" IS NOT NULL')
      from SYS.ALL_TAB_COLS atc
      where (
        atc.OWNER = ac.OWNER
        and atc.TABLE_NAME = ac.TABLE_NAME
      )
    )
  )
)

[ERROR] Error while generating table MASTER.EXP_MST_MACHINE_MDC_API
java.lang.NullPointerException
    at org.jooq.meta.AbstractDatabase.onError (AbstractDatabase.java:2550)
    at org.jooq.meta.AbstractDatabase.getRelations (AbstractDatabase.java:2016)
    at org.jooq.meta.DefaultColumnDefinition.getPrimaryKey (DefaultColumnDefinition.java:91)
    at org.jooq.meta.AbstractTableDefinition.getPrimaryKey (AbstractTableDefinition.java:86)
    at org.jooq.codegen.JavaGenerator.generateTable (JavaGenerator.java:3880)
    at org.jooq.codegen.JavaGenerator.generateTable (JavaGenerator.java:3874)
    at org.jooq.codegen.JavaGenerator.generateTables (JavaGenerator.java:3861)
    at org.jooq.codegen.JavaGenerator.generate (JavaGenerator.java:519)
    at org.jooq.codegen.JavaGenerator.generate (JavaGenerator.java:473)
    at org.jooq.codegen.JavaGenerator.generate (JavaGenerator.java:394)
    at org.jooq.codegen.GenerationTool.run0 (GenerationTool.java:845)
    at org.jooq.codegen.GenerationTool.run (GenerationTool.java:222)
    at org.jooq.codegen.GenerationTool.generate (GenerationTool.java:217)
    at org.jooq.codegen.maven.Plugin.execute (Plugin.java:207)
    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:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    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: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)
    at org.codehaus.classworlds.Launcher.main (Launcher.java:47)

Steps to reproduce the problem (if possible, create an MCVE: https://github.com/jOOQ/jOOQ-mcve):

When generating jOOQ code with flag includeCheckConstraints enabled using artifact org.jooq.pro-java-8:jooq-codegen-maven:3.13.1 on Oracle Database 11g Release 11.2.0.3.0

Versions:

  • jOOQ: 3.13.1 Professional
  • Java: java-1.8.0-openjdk-1.8.0.242-1.b08
  • Database (include vendor): Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
  • OS: Windows 10 Version 1903 (Build 18362.693)
  • JDBC Driver (include name if inofficial driver): com.oracle.database.jdbc:ojdbc8:12.2.0.1
@lukaseder
Copy link
Member

Thank you very much for your report. We'll fix this immediately.

Unless you need check constraint information in your code, this can be safely ignored. The exceptions should be merely cosmetic, and can be muted with the new <onError/> flag

@lukaseder
Copy link
Member

Another, more reliable workaround would be to set <includeSystemCheckConstraints/> to true in your code generator configuration.

@lukaseder
Copy link
Member

This problem was introduced with #9600, in jOOQ 3.13.0

@lukaseder
Copy link
Member

Fixed in jOOQ 3.14.0. Backport scheduled for 3.13.2 (#9937)

3.14 Other improvements automation moved this from To do to Done Mar 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

No branches or pull requests

2 participants