Wie unterstützt man Sqlserver's ".." in HyperSQL?

tl; dr: Ich versuche zu Unit-Test einige Sqlserver-Abfragen, die den db-Namen, aber sie scheinen nicht in HyperSql arbeiten.


Wir verwenden Sql server in der Produktion und ich versuche, HyperSQL als meine database für Unit-Tests zu verwenden. Ich versuche, eine class zu testing, die SQL-Abfragen schafft, so dass die database nicht abgebrochen wird, ist keine Option, da die Abfragen, die von einer realen database analysiert werden, Teil des Tests sind.

Abfragen sollen in Form von SELECT * FROM EntAsdfDb007..Data_Table , obwohl wir den Schemanamen ('db') verwenden können, wenn wir es wünschen.

Von dem, was ich über das SELECT-Format für Sqlserver verstehe, erlaubt es Ihnen, den Namen der database anzugeben, gefolgt von dem Namen des Schemas. Auch können Sie den Namen der database fallen lassen und haben sie abgeleitet.

In HyperSqlDb konnte ich das Schema 'db' erstellen und die notwendigen Tabellen in ihm erstellen und in der Lage sein, Tabellen innerhalb dieses Schemas zu erstellen, aber ich kann auch nicht mit dem databasenamen abfragen, auch nachdem du den DB-Namen eingestellt hast .setDatabaseName() . Die exception, die ich bekomme, ist:

 Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: ENTASDFDB007 

Nur um klar zu sein: Ich bin Unit-Testing eine class, die SQL wie SELECT * FROM EntAsdfDb007..Data_Table . Ich versuche, eine Instanz von HyperSql für Unit-Testzwecke einzurichten, aber HyperSql scheint die verwendete Syntax abzulehnen.

Das wird nicht möglich sein

HyperSQL kann nicht geändert werden, um Nicht-Standard-Namensschemata zu akzeptieren.

Es ist möglich. HSQLDB hat einen Katalog pro database. Der Katalogname ist standardmäßig PUBLIC, den Sie ändern können.

 ALTER CATALOG PUBLIC RENAME TO EntAsdfDb007 

Sie können dann auf Ihren Tisch mit zugreifen

 SELECT * FROM EntAsdfDb007.db.Data_Table