My application runs against oracle , and so far has been working great w/ Liquibase (thanks for that!). However, in the last feature we implemented, we started using Oracle Advanced Queuing as the Message Queue implementation. All worked great, until I tried to run the dropAll command - the current OracleDatabase implementation (somewhat understandably) doesn’t know how to handle queue tables in Oracle and fails w/ a message indicating that queue tables need to be dropped using special syntax (e.g. DBMS_AQADM.DROP_QUEUE_TABLE(queue_table=>“queue_table_name_whatever”, force=>true); ).
I ended up creating a plsql file that I can run that would drop all tables, triggers, etc and use the appropriate command for queue tables (which don’t seem to have any special attributes to recognize them from others, it seems). I could substitute the usage of the dropAll command with this script; however, I wonder if there is a better way that I can do this , e.g. :
- Enhance the dropAll in OracleDatabase to be aware somehow of queue tables and use the appropriate syntax to drop them.The trouble is, I’m not sure if such functionality is desirable in the generic OracleDatabase class.
- Somehow call a “pre-command” before dropAll is executed (e.g. that would drop the queue tables using the script) and allow dropAll to continue working as before. So far, I haven’t found any hooks to call a command “before” a specific task executes.
Any thoughts on how to deal with this within liquibase ?