Search code examples
postgresqlbabelfish

Accessing Tables outside of Babelfish_DB


Can I access data from tables that are not part of the Babelfish_DB?

I have tried

USE AnotherDatabase
SELECT * FROM sys.tables -- Returns all DB's defined in the Babelfish_DB scope?
SELECT * FROM TableInBabelFishDBScope -- works fine
SELECT * FROM MyExistingTableInAnotherDatabase --errors out, can't be found.

It appears that BabelFish_DB represents a SQL Server instance because I can see all the meta data tables in there. Can I create and/or access tables in other postgresql databases, at the moment I get an error when I try (could be human error/lack of understanding). If I am supposed to use the Babelfish_DB as the container for all babel-fish enabled DB's and commands could someone post documentation on this aspect?


Solution

  • In essence, only artifacts created via Babelfish are assessable to Babelfish and Databases outside of the Babelfish_DB cannot be accessed via Babelfish.

    All (T-SQL) created databases reside inside the BableFish_DB. Artifacts added outside of BF are not registered with Babelfish. For example, if a database name Database1 was created via Babelfish containing a table named Table1 and later a Table named Table2 was created with, for example, PgAdmin. The following (TSQL) command over Babelfish would fail SELECT * FROM Table2 relation "table2" does not exist

    In multiple-instance mode, multiple databases are abstracted away inside the BF databases via schema naming semantics -> <DatabaseName>_<SchemaName>.

    In single-instance mode, there is only support for one database thus the schema is simply -> <SchemaName>.

    If anyone finds inaccuracies in any of the above, please feel free to correct me.

    USE TestDB1
    SELECT * FROM Table1 --No schema created - Using Shema TestDb1_dbo
    
    USE TestDB2
    SELECT * FROM TestSchema.Table1 -- Schema TestSchema created against TestDB2 - using TestDB2_TestSchema
    
    USE TestDB3
    SELECT * FROM TestSchema.Table1 -- Schema TestSchema created against TestDB3 - using TestDB3_TestSchema