dbflute / dbflute-core

DBFlute core libraries for Java8
http://dbflute.seasar.org/
23 stars 18 forks source link

DBFlute Engine: ReplaceSchema dropping view dependencies on PostgreSQL #196

Closed jflute closed 4 months ago

jflute commented 8 months ago
create view SUMMARY_PRODUCT as
select product.PRODUCT_ID
     , product.PRODUCT_NAME
     , product.PRODUCT_STATUS_CODE
     , (select max(purchase.PURCHASE_DATETIME)
          from PURCHASE purchase
         where purchase.PRODUCT_ID = product.PRODUCT_ID
       ) as LATEST_PURCHASE_DATETIME
  from PRODUCT product
;

-- front as alphabet order
create view NESTED_SUMMARY_PRODUCT as
select product.PRODUCT_ID
     , product.PRODUCT_NAME
     , product.PRODUCT_STATUS_CODE
     , LATEST_PURCHASE_DATETIME
  from SUMMARY_PRODUCT product
;

-- rear as alphabet order
create view WRAPPED_SUMMARY_PRODUCT as
select product.PRODUCT_ID
     , product.PRODUCT_NAME
     , product.PRODUCT_STATUS_CODE
     , LATEST_PURCHASE_DATETIME
  from SUMMARY_PRODUCT product
;
[df-replace-schema] org.dbflute.exception.SQLFailureException: Failed to drop the table: drop view summary_product
[df-replace-schema]     at org.dbflute.logic.replaceschema.schemainitializer.DfSchemaInitializerJdbc.callbackDropTableByJdbc(DfSchemaInitializerJdbc.java:405)
[df-replace-schema]     at org.dbflute.logic.replaceschema.schemainitializer.DfSchemaInitializerJdbc.dropTable(DfSchemaInitializerJdbc.java:347)
[df-replace-schema]     at org.dbflute.logic.replaceschema.schemainitializer.DfSchemaInitializerJdbc.executeTableProcess(DfSchemaInitializerJdbc.java:201)
[df-replace-schema]     at org.dbflute.logic.replaceschema.schemainitializer.DfSchemaInitializerJdbc.executeObject(DfSchemaInitializerJdbc.java:171)
[df-replace-schema]     at org.dbflute.logic.replaceschema.schemainitializer.DfSchemaInitializerJdbc.initializeSchema(DfSchemaInitializerJdbc.java:106)
[df-replace-schema]     at org.dbflute.logic.replaceschema.process.DfCreateSchemaProcess.initializeSchemaMainDrop(DfCreateSchemaProcess.java:267)
[df-replace-schema]     at org.dbflute.logic.replaceschema.process.DfCreateSchemaProcess.initializeSchema(DfCreateSchemaProcess.java:205)
[df-replace-schema]     at org.dbflute.logic.replaceschema.process.DfCreateSchemaProcess.execute(DfCreateSchemaProcess.java:152)
[df-replace-schema]     at org.dbflute.task.DfReplaceSchemaTask.createSchema(DfReplaceSchemaTask.java:309)
[df-replace-schema]     at org.dbflute.task.DfReplaceSchemaTask.executeCoreProcess(DfReplaceSchemaTask.java:254)
[df-replace-schema]     at org.dbflute.task.DfReplaceSchemaTask.processReplaceSchema(DfReplaceSchemaTask.java:240)
[df-replace-schema]     at org.dbflute.task.DfReplaceSchemaTask.doExecute(DfReplaceSchemaTask.java:160)
[df-replace-schema]     at org.dbflute.task.bs.DfAbstractTexenTask$1.callActualExecute(DfAbstractTexenTask.java:129)
[df-replace-schema]     at org.dbflute.task.bs.assistant.DfTaskBasicController.doExecute(DfTaskBasicController.java:192)
[df-replace-schema]     at org.dbflute.task.bs.assistant.DfTaskBasicController.execute(DfTaskBasicController.java:78)
[df-replace-schema]     at org.dbflute.task.bs.DfAbstractTexenTask.execute(DfAbstractTexenTask.java:151)
[df-replace-schema]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[df-replace-schema]     at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
[df-replace-schema]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[df-replace-schema]     at java.lang.reflect.Method.invoke(Method.java:498)
[df-replace-schema]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[df-replace-schema]     at org.apache.tools.ant.Task.perform(Task.java:348)
[df-replace-schema]     at org.apache.tools.ant.Target.execute(Target.java:357)
[df-replace-schema]     at org.apache.tools.ant.Target.performTasks(Target.java:385)
[df-replace-schema]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
[df-replace-schema]     at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
[df-replace-schema]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[df-replace-schema]     at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
[df-replace-schema]     at org.apache.tools.ant.Main.runBuild(Main.java:698)
[df-replace-schema]     at org.apache.tools.ant.Main.startAnt(Main.java:199)
[df-replace-schema]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[df-replace-schema]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
[df-replace-schema] Caused by: org.postgresql.util.PSQLException: ERROR: cannot drop view summary_product because other objects depend on it
[df-replace-schema]   詳細: view wrapped_summary_product depends on view summary_product
[df-replace-schema]   ヒント: Use DROP ... CASCADE to drop the dependent objects too.
[df-replace-schema]     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2510)
[df-replace-schema]     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2245)
[df-replace-schema]     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:311)
[df-replace-schema]     at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:447)
[df-replace-schema]     at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:368)
[df-replace-schema]     at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:309)
[df-replace-schema]     at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:295)
[df-replace-schema]     at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:272)
[df-replace-schema]     at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:267)
[df-replace-schema]     at org.dbflute.logic.replaceschema.schemainitializer.DfSchemaInitializerJdbc.callbackDropTableByJdbc(DfSchemaInitializerJdbc.java:398)
[df-replace-schema]     ... 31 more