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               | &lt;undefined&gt;          
                              | 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>

Reply via email to