From 792896a3c9a6bf9336a92801d628ad879f38b1c9 Mon Sep 17 00:00:00 2001 From: ThuF Date: Wed, 22 Jan 2025 13:44:43 +0200 Subject: [PATCH] #4569 [Data] Import SQL script in Schema - Add support for processing of binary content --- .../manager/DataSourceInitializer.java | 42 ++++++++---- .../sql/dialects/DefaultSqlDialect.java | 65 ++++++++++++++----- 2 files changed, 79 insertions(+), 28 deletions(-) diff --git a/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/DataSourceInitializer.java b/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/DataSourceInitializer.java index e5b54cd5f8f..c9ff2c0ed08 100644 --- a/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/DataSourceInitializer.java +++ b/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/DataSourceInitializer.java @@ -9,28 +9,38 @@ */ package org.eclipse.dirigible.components.data.sources.manager; -import com.zaxxer.hikari.HikariConfig; +import static java.text.MessageFormat.format; +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Properties; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.TimeUnit; import org.eclipse.dirigible.commons.config.Configuration; import org.eclipse.dirigible.commons.config.DirigibleConfig; import org.eclipse.dirigible.components.data.sources.config.DefaultDataSourceName; import org.eclipse.dirigible.components.data.sources.config.SystemDataSourceName; import org.eclipse.dirigible.components.data.sources.domain.DataSource; import org.eclipse.dirigible.components.data.sources.domain.DataSourceProperty; -import org.eclipse.dirigible.components.database.*; +import org.eclipse.dirigible.components.database.DatabaseConfigurator; +import org.eclipse.dirigible.components.database.DatabaseParameters; +import org.eclipse.dirigible.components.database.DatabaseSystem; +import org.eclipse.dirigible.components.database.DatabaseSystemDeterminer; +import org.eclipse.dirigible.components.database.DirigibleDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.*; -import java.util.concurrent.TimeUnit; - -import static java.text.MessageFormat.format; +import com.zaxxer.hikari.HikariConfig; /** * The Class DataSourceInitializer. @@ -141,10 +151,16 @@ private DirigibleDataSource initDataSource(DataSource dataSource) { config.setMaximumPoolSize(20); config.setMinimumIdle(10); - config.setIdleTimeout(TimeUnit.MINUTES.toMillis(3)); // free connections when idle, potentially remove leaked connections - config.setMaxLifetime(TimeUnit.MINUTES.toMillis(15)); // recreate connections after specified time + + // free connections when idle, potentially remove leaked connections + config.setIdleTimeout(TimeUnit.MINUTES.toMillis(3)); + + // recreate connections after specified time + config.setMaxLifetime(TimeUnit.MINUTES.toMillis(Configuration.getAsInt(name + "_MAX_LIFETIME_MINUTES", 15))); config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(15)); - config.setLeakDetectionThreshold(TimeUnit.MINUTES.toMillis(1)); // log message for possible leaked connection + + // log message for possible leaked connection + config.setLeakDetectionThreshold(TimeUnit.MINUTES.toMillis(Configuration.getAsInt(name + "_LEAK_DETECTION_THRESHOLD_MINUTES", 1))); applyDbSpecificConfigurations(dbType, config); diff --git a/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/dialects/DefaultSqlDialect.java b/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/dialects/DefaultSqlDialect.java index 1302b4bb2e5..4385b8a93e1 100644 --- a/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/dialects/DefaultSqlDialect.java +++ b/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/dialects/DefaultSqlDialect.java @@ -9,7 +9,27 @@ */ package org.eclipse.dirigible.database.sql.dialects; -import org.eclipse.dirigible.database.sql.*; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import org.eclipse.dirigible.database.sql.DataType; +import org.eclipse.dirigible.database.sql.DatabaseArtifactTypes; +import org.eclipse.dirigible.database.sql.DatabaseType; +import org.eclipse.dirigible.database.sql.ISqlDialect; +import org.eclipse.dirigible.database.sql.ISqlKeywords; +import org.eclipse.dirigible.database.sql.SqlException; import org.eclipse.dirigible.database.sql.builders.AlterBranchingBuilder; import org.eclipse.dirigible.database.sql.builders.CreateBranchingBuilder; import org.eclipse.dirigible.database.sql.builders.DropBranchingBuilder; @@ -20,17 +40,8 @@ import org.eclipse.dirigible.database.sql.builders.records.UpdateBuilder; import org.eclipse.dirigible.database.sql.builders.sequence.LastValueIdentityBuilder; import org.eclipse.dirigible.database.sql.builders.sequence.NextValueSequenceBuilder; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.sql.*; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The Default SQL Dialect. @@ -64,6 +75,8 @@ public class DefaultSqlDialect