You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Rawad Assaf <ra...@gmail.com> on 2016/12/05 19:17:49 UTC

JDBC Message Store

Hello,

While checking the implementation of the JDBC Message Store I noticed that
the implementation starts by checking if the tables exist (as
per AbstractJDBCMessageStore#upgrade).

However, the check for table existence in JdbcUtils doesn't filter on a
specific schema:

ResultSet rs = metaData.getTables(null, null /*Schema Pattern*/, "%", null);

If we have previously persisted messages on schema A, and we are currently
launching another broker instance on schema B the above "schema-less" check
would consider that the tables already exist. Wouldn't this wrongly skip
the creation of tables on schema B. Or have I misunderstood the above
check?

Best regards,
Rawad.

Re: JDBC Message Store

Posted by Rob Godfrey <ro...@gmail.com>.
Hi Rawad,

I assume you are correct... To be honest I personally don't have a lot of
experience with RDBMs that use schemas - all my serious database work was
against Sybase / SQL Server (and it's probably been 10 years since I was
using them).

When the JDBC store was initially written I fired up an instance of Oracle
(is this what you are using) on my laptop to test that the basic
functionality worked but I admit I didn't consider the implications of
having multiple schemas with the same table names.  If you have a database
server where you think this would be an issue and can verify that there is
indeed a problem and/or produce a patch, that would be awesome.  I'm
travelling this week (and as above, I don't actually have an environment to
test this is), so any help would be most appreciated.

Thanks,
Rob

On 5 December 2016 at 19:17, Rawad Assaf <ra...@gmail.com> wrote:

> Hello,
>
> While checking the implementation of the JDBC Message Store I noticed that
> the implementation starts by checking if the tables exist (as
> per AbstractJDBCMessageStore#upgrade).
>
> However, the check for table existence in JdbcUtils doesn't filter on a
> specific schema:
>
> ResultSet rs = metaData.getTables(null, null /*Schema Pattern*/, "%",
> null);
>
> If we have previously persisted messages on schema A, and we are currently
> launching another broker instance on schema B the above "schema-less" check
> would consider that the tables already exist. Wouldn't this wrongly skip
> the creation of tables on schema B. Or have I misunderstood the above
> check?
>
> Best regards,
> Rawad.
>