This is an automated email from the ASF dual-hosted git repository.
chengpan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi.git
The following commit(s) were added to refs/heads/master by this push:
new f69cf9406 [KYUUBI #4950][FOLLOWUP] Misc improvement for usage of SQLite
f69cf9406 is described below
commit f69cf9406faa0bd9e9f32196d3f1be7a62b6f950
Author: Cheng Pan <[email protected]>
AuthorDate: Tue Jun 13 20:08:45 2023 +0800
[KYUUBI #4950][FOLLOWUP] Misc improvement for usage of SQLite
### _Why are the changes needed?_
- Improve log on executing init schema DDL.
- Add `IF NOT EXISTS` on `CREATE INDEX` statement.
- Fix `kyuubi.metadata.store.jdbc.url` configuration description.
- Delete SQLite files on performing `build/mvn clean`
### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including
negative and positive cases if possible
- [ ] Add screenshots for manual tests if appropriate
- [x] [Run
test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests)
locally before make a pull request
Closes #4953 from pan3793/sqlite-followup.
Closes #4950
a0b44f37c [Cheng Pan] [KYUUBI #4950][FOLLOWUP] Misc improvement for usage
of SQLite
Authored-by: Cheng Pan <[email protected]>
Signed-off-by: Cheng Pan <[email protected]>
---
docs/deployment/settings.md | 2 +-
.../resources/sql/sqlite/metadata-store-schema-1.6.0.sqlite.sql | 8 ++++----
.../resources/sql/sqlite/metadata-store-schema-1.7.0.sqlite.sql | 6 +++---
.../apache/kyuubi/server/metadata/jdbc/JDBCMetadataStore.scala | 6 ++++--
.../kyuubi/server/metadata/jdbc/JDBCMetadataStoreConf.scala | 4 ++--
pom.xml | 1 +
6 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/docs/deployment/settings.md b/docs/deployment/settings.md
index 4fa8c73d9..97ca5973d 100644
--- a/docs/deployment/settings.md
+++ b/docs/deployment/settings.md
@@ -329,7 +329,7 @@ You can configure the Kyuubi properties in
`$KYUUBI_HOME/conf/kyuubi-defaults.co
| kyuubi.metadata.store.jdbc.database.type | SQLITE
| The database type for server jdbc metadata
store.<ul> <li>(Deprecated) DERBY: Apache Derby, JDBC driver
`org.apache.derby.jdbc.AutoloadedDriver`.</li> <li>SQLITE: SQLite3, JDBC driver
`org.sqlite.JDBC`.</li> <li>MYSQL: MySQL, JDBC driver
`com.mysql.jdbc.Driver`.</li> <li>CUSTOM: User-defined database type, need to
specify corresponding JDBC driver.</li> Note that: The JDBC datas [...]
| kyuubi.metadata.store.jdbc.driver | <undefined>
| JDBC driver class name for server jdbc metadata
store.
[...]
| kyuubi.metadata.store.jdbc.password
|| The password for server JDBC metadata store.
[...]
-| kyuubi.metadata.store.jdbc.url |
jdbc:sqlite:memory:kyuubi_state_store.db | The JDBC url for
server JDBC metadata store. By default, it is a DERBY in-memory database url,
and the state information is not shared across kyuubi instances. To enable high
availability for multiple kyuubi instances, please specify a production JDBC
url.
[...]
+| kyuubi.metadata.store.jdbc.url |
jdbc:sqlite:kyuubi_state_store.db | The JDBC url for
server JDBC metadata store. By default, it is a SQLite database url, and the
state information is not shared across kyuubi instances. To enable high
availability for multiple kyuubi instances, please specify a production JDBC
url.
[...]
| kyuubi.metadata.store.jdbc.user
|| The username for server JDBC metadata store.
[...]
### Metrics
diff --git
a/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.6.0.sqlite.sql
b/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.6.0.sqlite.sql
index 72447e452..c444a96ce 100644
---
a/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.6.0.sqlite.sql
+++
b/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.6.0.sqlite.sql
@@ -26,10 +26,10 @@ CREATE TABLE IF NOT EXISTS metadata(
peer_instance_closed boolean default '0' -- closed by peer kyuubi instance
);
-CREATE INDEX metadata_kyuubi_instance_index ON metadata(kyuubi_instance);
+CREATE INDEX IF NOT EXISTS metadata_kyuubi_instance_index ON
metadata(kyuubi_instance);
-CREATE UNIQUE INDEX metadata_unique_identifier_index ON metadata(identifier);
+CREATE UNIQUE INDEX IF NOT EXISTS metadata_unique_identifier_index ON
metadata(identifier);
-CREATE INDEX metadata_user_name_index ON metadata(user_name);
+CREATE INDEX IF NOT EXISTS metadata_user_name_index ON metadata(user_name);
-CREATE INDEX metadata_engine_type_index ON metadata(engine_type);
+CREATE INDEX IF NOT EXISTS metadata_engine_type_index ON metadata(engine_type);
diff --git
a/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.7.0.sqlite.sql
b/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.7.0.sqlite.sql
index fd5513e42..2b05dd5db 100644
---
a/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.7.0.sqlite.sql
+++
b/kyuubi-server/src/main/resources/sql/sqlite/metadata-store-schema-1.7.0.sqlite.sql
@@ -27,8 +27,8 @@ CREATE TABLE IF NOT EXISTS metadata(
peer_instance_closed boolean default '0' -- closed by peer kyuubi instance
);
-CREATE UNIQUE INDEX metadata_unique_identifier_index ON metadata(identifier);
+CREATE UNIQUE INDEX IF NOT EXISTS metadata_unique_identifier_index ON
metadata(identifier);
-CREATE INDEX metadata_user_name_index ON metadata(user_name);
+CREATE INDEX IF NOT EXISTS metadata_user_name_index ON metadata(user_name);
-CREATE INDEX metadata_engine_type_index ON metadata(engine_type);
+CREATE INDEX IF NOT EXISTS metadata_engine_type_index ON metadata(engine_type);
diff --git
a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStore.scala
b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStore.scala
index e815efabb..3f9463bf7 100644
---
a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStore.scala
+++
b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStore.scala
@@ -82,12 +82,14 @@ class JDBCMetadataStore(conf: KyuubiConf) extends
MetadataStore with Logging {
private def initSchema(): Unit = {
getInitSchema(dbType).foreach { schema =>
- val ddlStatements = schema.trim.split(";")
+ val ddlStatements = schema.trim.split(";").map(_.trim)
JdbcUtils.withConnection { connection =>
Utils.tryLogNonFatalError {
ddlStatements.foreach { ddlStatement =>
execute(connection, ddlStatement)
- info(s"Execute init schema ddl: $ddlStatement successfully.")
+ info(s"""Execute init schema ddl successfully.
+ |$ddlStatement
+ |""".stripMargin)
}
}
}
diff --git
a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStoreConf.scala
b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStoreConf.scala
index 0b4786810..dd5d74138 100644
---
a/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStoreConf.scala
+++
b/kyuubi-server/src/main/scala/org/apache/kyuubi/server/metadata/jdbc/JDBCMetadataStoreConf.scala
@@ -69,14 +69,14 @@ object JDBCMetadataStoreConf {
val METADATA_STORE_JDBC_URL: ConfigEntry[String] =
buildConf("kyuubi.metadata.store.jdbc.url")
- .doc("The JDBC url for server JDBC metadata store. By default, it is a
DERBY in-memory" +
+ .doc("The JDBC url for server JDBC metadata store. By default, it is a
SQLite" +
" database url, and the state information is not shared across kyuubi
instances. To" +
" enable high availability for multiple kyuubi instances," +
" please specify a production JDBC url.")
.version("1.6.0")
.serverOnly
.stringConf
- .createWithDefault("jdbc:sqlite:memory:kyuubi_state_store.db")
+ .createWithDefault("jdbc:sqlite:kyuubi_state_store.db")
val METADATA_STORE_JDBC_USER: ConfigEntry[String] =
buildConf("kyuubi.metadata.store.jdbc.user")
diff --git a/pom.xml b/pom.xml
index bb70dfdb5..da883e207 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1820,6 +1820,7 @@
<directory>${project.basedir}</directory>
<includes>
<include>**/*.log</include>
+ <include>**/*.db</include>
</includes>
</fileset>
<fileset>