codbex / codbex-kronos

SAP HANA XS Classic and ABAP Compatibility Platform
https://codbex.com
Eclipse Public License 2.0
5 stars 3 forks source link

[HDBDD] Public synonyms are not created #420

Closed ThuF closed 1 year ago

ThuF commented 1 year ago

Overview

The following public synonym SQL is not accepted by HANA Cloud:

CREATE SYNONYM "PUBLIC"."com.codbex.test.data::Test.Table1234"
FOR "SCHEMA_NAME"."com.codbex.test.data::Test.Table1234"

Exception:

com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [330]: cannot use duplicate synonym name: com.codbex.test.data::Test.Table1234: line 1 col 25 (at pos 24)
        at com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:209) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance(SQLExceptionSapDB.java:42) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.packet.HReplyPacket._buildExceptionChain(HReplyPacket.java:841) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.packet.HReplyPacket.getSQLExceptionChain(HReplyPacket.java:195) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.packet.HPartInfo.getSQLExceptionChain(HPartInfo.java:39) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.ConnectionSapDB._receive(ConnectionSapDB.java:5644) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.ConnectionSapDB.exchange(ConnectionSapDB.java:2566) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.PreparedStatementSapDB._prepare(PreparedStatementSapDB.java:3682) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.PreparedStatementSapDB._doParse(PreparedStatementSapDB.java:3569) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.PreparedStatementSapDB.<init>(PreparedStatementSapDB.java:170) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.PreparedStatementSapDB9.<init>(Unknown Source) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.HanaPreparedStatement.<init>(Unknown Source) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.HanaPreparedStatementClean.<init>(Unknown Source) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.HanaPreparedStatementClean.newInstance(Unknown Source) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.ConnectionSapDB9._prepareStatement(Unknown Source) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.sap.db.jdbc.ConnectionSapDB.prepareStatement(ConnectionSapDB.java:419) ~[ngdbc-2.15.12.jar:2.15.12-287903cafd3f3116b5e4bef7d287c2f70db4113c]
        at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:327) ~[HikariCP-5.0.1.jar:na]
        at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-5.0.1.jar:na]
        at com.codbex.kronos.engine.hdb.processors.AbstractHDBProcessor.executeSql(AbstractHDBProcessor.java:43) ~[classes/:na]
        at com.codbex.kronos.engine.hdb.processors.HDBSynonymCreateProcessor.execute(HDBSynonymCreateProcessor.java:63) ~[classes/:na]
        at com.codbex.kronos.engine.hdb.parser.HDBUtils.createPublicSynonymForArtifact(HDBUtils.java:133) ~[classes/:na]
        at com.codbex.kronos.engine.hdb.processors.HDBTableTypeCreateProcessor.execute(HDBTableTypeCreateProcessor.java:99) ~[classes/:na]
        at com.codbex.kronos.engine.hdb.synchronizer.HDBDDSynchronizer.executeHDBDDCreate(HDBDDSynchronizer.java:390) ~[classes/:na]
        at com.codbex.kronos.engine.hdb.synchronizer.HDBDDSynchronizer.complete(HDBDDSynchronizer.java:303) ~[classes/:na]
        at org.eclipse.dirigible.components.base.artefact.topology.TopologyWrapper.complete(TopologyWrapper.java:118) ~[classes/:na]
        at org.eclipse.dirigible.components.base.artefact.topology.TopologicalDepleter.deplete(TopologicalDepleter.java:43) ~[classes/:na]
        at org.eclipse.dirigible.components.initializers.synchronizer.SynchronizationProcessor.processSynchronizers(SynchronizationProcessor.java:236) ~[classes/:na]
        at org.eclipse.dirigible.components.initializers.synchronizer.SynchronizationJobService.executeSynchronizationJob(SynchronizationJobService.java:55) ~[classes/:na]
        at org.eclipse.dirigible.components.initializers.synchronizer.SynchronizationJob.lambda$0(SynchronizationJob.java:62) ~[classes/:na]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577) ~[na:na]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
        at java.base/java.lang.Thread.run(Thread.java:1623) ~[na:na]

Solution

Public synonyms should be created as follows:

CREATE PUBLIC SYNONYM "com.codbex.test.data::Test.Table1234"
FOR "SCHEMA_NAME"."com.codbex.test.data::Test.Table1234""
ThuF commented 1 year ago

Fixed with: