Skip to content

Commit 3ec8c5b

Browse files
masseb974eng-dedalus
authored andcommitted
Modifications for Apache Doris
(cherry picked from commit 8537f86)
1 parent ecc5714 commit 3ec8c5b

13 files changed

Lines changed: 45 additions & 12 deletions

File tree

knowage-core/src/main/java/it/eng/spagobi/tools/dataset/cache/ICacheMetadata.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ public interface ICacheMetadata {
4646
*/
4747
BigDecimal getUsedMemory() throws DataBaseException;
4848

49+
/**
50+
* @return used cache memory in bytes
51+
* @throws DataBaseException
52+
*/
53+
BigDecimal getUsedMemory(String table) throws DataBaseException;
54+
4955
/**
5056
* @return available cache memory in bytes
5157
* @throws DataBaseException

knowage-core/src/main/java/it/eng/spagobi/tools/dataset/cache/impl/sqldbcache/SQLDBCache.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@
7272
import it.eng.spagobi.utilities.assertion.Assert;
7373
import it.eng.spagobi.utilities.cache.CacheItem;
7474
import it.eng.spagobi.utilities.database.DataBaseException;
75-
import it.eng.spagobi.utilities.database.DataBaseFactory;
76-
import it.eng.spagobi.utilities.database.DatabaseUtilities;
7775
import it.eng.spagobi.utilities.exceptions.SpagoBIRuntimeException;
7876
import it.eng.spagobi.utilities.locks.DistributedLockFactory;
7977

@@ -302,7 +300,7 @@ private IDataStore queryStandardCachedDataset(IDataSet dataSet, String resultset
302300
if (mapLocks.tryLock(hashedSignature, getTimeout(), TimeUnit.SECONDS, getLeaseTime(), TimeUnit.SECONDS)) {
303301
timing.stop();
304302

305-
cacheMetadata.updateAllCacheItems(getDataSource());
303+
// cacheMetadata.updateAllCacheItems(getDataSource());
306304

307305
try {
308306
timing = MonitorFactory.start("Knowage.SQLDBCache.queryStandardCachedDataset:usingLock[" + hashedSignature + "]");
@@ -413,7 +411,7 @@ public void put(IDataSet dataSet, Set<String> columns) {
413411
timing.stop();
414412
try {
415413
timing = MonitorFactory.start("Knowage.SQLDBCache.putWithIterator:usingLock[" + hashedSignature + "]");
416-
cacheMetadata.updateAllCacheItems(getDataSource());
414+
// cacheMetadata.updateAllCacheItems(getDataSource());
417415

418416
// check again it is not already inserted
419417
if (!cacheMetadata.containsCacheItem(signature)) {
@@ -433,8 +431,11 @@ public void put(IDataSet dataSet, Set<String> columns) {
433431

434432
JSONArray parameters = DataSetUtilities.paramsFromXML2JSONObj(dataSet);
435433

434+
// cacheMetadata.addCacheItem(dataSet.getName(), signature, tableName,
435+
// DatabaseUtilities.getUsedMemorySize(DataBaseFactory.getCacheDataBase(getDataSource()), "cache", tableName), parameters);
436+
436437
cacheMetadata.addCacheItem(dataSet.getName(), signature, tableName,
437-
DatabaseUtilities.getUsedMemorySize(DataBaseFactory.getCacheDataBase(getDataSource()), "cache", tableName), parameters);
438+
new BigDecimal(0), parameters);
438439

439440
if (getMetadata().isCleaningEnabled() && getMetadata().getAvailableMemory().compareTo(new BigDecimal(0)) < 0) {
440441
deleteToQuota();
@@ -844,7 +845,8 @@ private boolean refreshCacheItem(String signature, boolean isHash) throws Except
844845
persistedTableManager.renameTable(tableNameRefresh, tableName, getDataSource());
845846

846847
ICacheDAO cacheDao = DAOFactory.getCacheDao();
847-
cacheItem.setDimension(DatabaseUtilities.getUsedMemorySize(DataBaseFactory.getCacheDataBase(getDataSource()), "cache", tableName));
848+
// cacheItem.setDimension(DatabaseUtilities.getUsedMemorySize(DataBaseFactory.getCacheDataBase(getDataSource()), "cache", tableName));
849+
cacheItem.setDimension(new BigDecimal(0));
848850
cacheDao.updateCacheItem(cacheItem);
849851

850852
TenantManager.unset();

knowage-core/src/main/java/it/eng/spagobi/tools/dataset/cache/impl/sqldbcache/SQLDBCacheMetadata.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@ public BigDecimal getUsedMemory() throws DataBaseException {
118118
return usedMemory;
119119
}
120120

121+
@Override
122+
public BigDecimal getUsedMemory(String table) throws DataBaseException {
123+
CacheDataBase dataBase = DataBaseFactory.getCacheDataBase(cacheConfiguration.getCacheDataSource());
124+
BigDecimal usedMemory = DatabaseUtilities.getUsedMemorySize(dataBase, cacheConfiguration.getSchema(), table);
125+
logger.debug("Used memory is equal to [" + usedMemory + "] in ");
126+
return usedMemory;
127+
}
128+
121129
/**
122130
* Returns the number of bytes available in the cache (approximate)
123131
*

knowage/src/main/resources/it/eng/spagobi/commons/initializers/metadata/config/domains.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,10 @@
473473
valueNm="sbidomains.nm.spanner" domainCd="DIALECT_HIB"
474474
domainNm="Predefined hibernate dialect" valueDs="sbidomains.ds.spanner" />
475475

476+
<DOMAIN valueCd="doris"
477+
valueNm="sbidomains.nm.doris" domainCd="DIALECT_HIB"
478+
domainNm="Predefined hibernate dialect" valueDs="sbidomains.ds.doris" />
479+
476480
<DOMAIN valueCd="MEASURE" valueNm="sbidomains.nm.measure"
477481
domainCd="KPI_RULEOUTPUT_TYPE" domainNm="KPI Rule Output types" valueDs="sbidomains.ds.measure" />
478482

knowagedao/src/main/java/it/eng/spagobi/behaviouralmodel/lov/bo/QueryDetail.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ private String composeStringToDt(DatabaseDialect dialect, String date) {
701701
String toReturn = "";
702702
date = escapeString(date); // for security reasons
703703
if (dialect != null) {
704-
if (dialect.equals(DatabaseDialect.MYSQL) || dialect.equals(DatabaseDialect.MYSQL_INNODB)) {
704+
if (dialect.equals(DatabaseDialect.MYSQL) || dialect.equals(DatabaseDialect.MYSQL_INNODB) || dialect.equals(DatabaseDialect.DORIS)) {
705705
if (date.startsWith("'") && date.endsWith("'")) {
706706
toReturn = " STR_TO_DATE(" + date + ",'%d/%m/%Y %h:%i:%s') ";
707707
} else {

knowageutils/src/main/java/it/eng/spagobi/tools/dataset/constants/DatasetFunctionsConfig.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static it.eng.spagobi.tools.dataset.metasql.query.DatabaseDialect.BIGQUERY;
44
import static it.eng.spagobi.tools.dataset.metasql.query.DatabaseDialect.CASSANDRA;
55
import static it.eng.spagobi.tools.dataset.metasql.query.DatabaseDialect.DB2;
6+
import static it.eng.spagobi.tools.dataset.metasql.query.DatabaseDialect.DORIS;
67
import static it.eng.spagobi.tools.dataset.metasql.query.DatabaseDialect.HIVE;
78
import static it.eng.spagobi.tools.dataset.metasql.query.DatabaseDialect.HIVE2;
89
import static it.eng.spagobi.tools.dataset.metasql.query.DatabaseDialect.IMPALA;
@@ -49,7 +50,8 @@ public DatasetFunctionsConfig() {
4950
availableFunctions.add(NULLIF);
5051
map.put(AVAILABLE_FUNCTIONS, availableFunctions);
5152

52-
Stream.of(HIVE2, MONGO, DB2, IMPALA, MYSQL, MYSQL_INNODB, ORACLE_9I10G, ORACLE, POSTGRESQL, SPARKSQL, SQLSERVER, ORACLE_SPATIAL, TERADATA, VERTICA,
53+
Stream.of(HIVE2, MONGO, DB2, IMPALA, MYSQL, DORIS, MYSQL_INNODB, ORACLE_9I10G, ORACLE, POSTGRESQL, SPARKSQL, SQLSERVER, ORACLE_SPATIAL, TERADATA,
54+
VERTICA,
5355
REDSHIFT, BIGQUERY, SYNAPSE, SPANNER).forEach(e -> functionsConfigurationMap.put(e.getValue(), map));
5456
}
5557

knowageutils/src/main/java/it/eng/spagobi/tools/dataset/metasql/query/DatabaseDialect.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public enum DatabaseDialect {
3535
DB2("IBM DB2", "org.hibernate.dialect.DB2400Dialect", true, true, false, false),
3636
IMPALA("Apache Impala","org.hibernate.dialect.impala", true, true, false,true),
3737
MYSQL("MySQL/MariaDB", "org.hibernate.dialect.MySQLDialect", true, true, true, true),
38+
DORIS("Doris", "doris", true, true, true, true),
3839
MYSQL_INNODB("MySQL/MariaDB (INNODB)", "org.hibernate.dialect.MySQLInnoDBDialect", true, true, true, true),
3940
ORACLE_9I10G("Oracle 9i/10g","org.hibernate.dialect.Oracle9Dialect", true, true, true, true),
4041
ORACLE("Oracle", "org.hibernate.dialect.OracleDialect", true, true, true, true),
@@ -67,7 +68,7 @@ public enum DatabaseDialect {
6768
private final boolean multiColumnInOperatorSupported;
6869
private final boolean inLineViewSupported;
6970

70-
private DatabaseDialect(String name, String value, boolean isSqlLike, boolean isSingleColumnInOperatorSupported, boolean isMultiColumnInOperatorSupported,
71+
DatabaseDialect(String name, String value, boolean isSqlLike, boolean isSingleColumnInOperatorSupported, boolean isMultiColumnInOperatorSupported,
7172
boolean inLineViewSupported) {
7273
Assert.assertTrue(isSingleColumnInOperatorSupported || !isMultiColumnInOperatorSupported,
7374
"Dialect can't support multi-column IN operator if it doesn't support single-column IN operator");

knowageutils/src/main/java/it/eng/spagobi/tools/dataset/metasql/query/visitor/SelectQueryVisitorFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public static ISelectQueryVisitor getVisitor(IDataSource dataSource) throws Data
4141
case MYSQL:
4242
case MYSQL_INNODB:
4343
return new MySqlSelectQueryVisitor(database);
44+
case DORIS:
45+
return new MySqlSelectQueryVisitor(database);
4446
case ORACLE:
4547
case ORACLE_9I10G:
4648
case ORACLE_SPATIAL:

knowageutils/src/main/java/it/eng/spagobi/tools/dataset/persist/PersistedTableManager.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1025,6 +1025,9 @@ private String getCreateTableQuery(IMetaData md, IDataSource dataSource) throws
10251025
toReturn += ((i < l - 1) ? " , " : "");
10261026
}
10271027
toReturn += " )";
1028+
if (dataSource.getDialectName().contains(DatabaseDialect.DORIS.getValue())) {
1029+
toReturn = toReturn + " ENGINE=OLAP";
1030+
}
10281031
} else {
10291032
LOGGER.debug("Metadata fields object not found! Doesn't create temporary table.");
10301033
}
@@ -1110,7 +1113,7 @@ public void dropTablesWithPrefix(IDataSource datasource, String prefix) {
11101113
statement = "SELECT TABLE_NAME " + "FROM USER_TABLES " + "WHERE TABLE_NAME LIKE '" + prefix.toUpperCase()
11111114
+ "%'";
11121115
} else if (dialect.equals(DatabaseDialect.SQLSERVER) || dialect.equals(DatabaseDialect.MYSQL)
1113-
|| dialect.equals(DatabaseDialect.MYSQL_INNODB) || dialect.equals(DatabaseDialect.POSTGRESQL)) {
1116+
|| dialect.equals(DatabaseDialect.MYSQL_INNODB) || dialect.equals(DatabaseDialect.POSTGRESQL) || dialect.equals(DatabaseDialect.DORIS)) {
11141117
statement = "SELECT TABLE_NAME " + "FROM INFORMATION_SCHEMA.TABLES " + "WHERE TABLE_NAME LIKE '"
11151118
+ prefix.toLowerCase() + "%'";
11161119
}

knowageutils/src/main/java/it/eng/spagobi/utilities/database/DataBaseFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public static IDataBase getDataBase(IDataSource dataSource) throws DataBaseExcep
5252
case MYSQL:
5353
case MYSQL_INNODB:
5454
return new MySQLDataBase(dataSource);
55+
case DORIS:
56+
return new MySQLDataBase(dataSource);
5557
case ORACLE:
5658
return new OracleDataBase(dataSource);
5759
case ORACLE_9I10G:

0 commit comments

Comments
 (0)