It seems reasonable (bugs do exist) but your final assumption isn't. The only cache is an in memory table in the mirror db you're always speaking with. Second part tomorrow, here it is night now.
Last edit: Marco Amadei 2015-12-01
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The first one assumption is correct instead, the trigger to check for an external update is a "database touch" so the execution of a statement, but I omitted to do it for internal metadata query. So if you had executed a query like select * from dual before conn.getMetaData().getTables it would have worked. Obviously it's a bug (and bugs do exist). Fix will be in the 3.0.3.
Last edit: Marco Amadei 2015-12-02
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Would it be reasonable for connection.getMetaData().getTables() to pick up new tables as they are added?
Actually, you might even see this with two different connection objects in the same process, implying that some shared caching is going on...
It seems reasonable (bugs do exist) but your final assumption isn't. The only cache is an in memory table in the mirror db you're always speaking with. Second part tomorrow, here it is night now.
Last edit: Marco Amadei 2015-12-01
What if you get metadata after having executed a query (any query)?
So, as I said your final assumption about cache is wrong(and a bit misleading).
To get evidence of this execute:
The first one assumption is correct instead, the trigger to check for an external update is a "database touch" so the execution of a statement, but I omitted to do it for internal metadata query. So if you had executed a query like
select * from dual
beforeconn.getMetaData().getTables
it would have worked. Obviously it's a bug (and bugs do exist). Fix will be in the 3.0.3.Last edit: Marco Amadei 2015-12-02
Awesome! Thank you
Fixed in svn trunk.