dimas-b commented on code in PR #1942:
URL: https://github.com/apache/polaris/pull/1942#discussion_r2167738233


##########
persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java:
##########
@@ -108,18 +115,19 @@ private void initializeForRealm(
     metaStoreManagerMap.put(realmContext.getRealmIdentifier(), 
metaStoreManager);
   }
 
-  private DatasourceOperations getDatasourceOperations(boolean isBootstrap) {
+  private DatasourceOperations getDatasourceOperations(Optional<SchemaOptions> 
schemaOptions) {
     DatasourceOperations databaseOperations;
     try {
       databaseOperations = new DatasourceOperations(dataSource.get(), 
relationalJdbcConfiguration);
     } catch (SQLException sqlException) {
       throw new RuntimeException(sqlException);
     }
-    if (isBootstrap) {
+    // If this is set, we are bootstrapping
+    if (schemaOptions.isPresent()) {

Review Comment:
   Since we're touching this code, I'd like to avoid having bootstrap logic on 
the main runtime call path (in server). Do you think we could refactor that to 
execute DDL only in the admin tool?



##########
runtime/admin/src/main/java/org/apache/polaris/admintool/BootstrapCommand.java:
##########
@@ -71,6 +78,23 @@ static class FileInputOptions {
           description = "A file containing root principal credentials to 
bootstrap.")
       Path file;
     }
+
+    static class SchemaInputOptions {
+      @CommandLine.Option(
+          names = {"-v", "--schema-version"},
+          paramLabel = "<schema version>",
+          description = "The version of the schema to load in [1, 2, LATEST].",
+          defaultValue = SchemaOptions.LATEST)
+      String schemaVersion;
+
+      @CommandLine.Option(
+          names = {"--schema-file"},
+          paramLabel = "<schema file>",
+          description =
+              "A schema file to bootstrap from. If unset, the bundled files 
will be used.",

Review Comment:
   "file" may be misleading here. The script is loaded from resources built 
into the admin tool jar, IIRC.



##########
persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatabaseType.java:
##########
@@ -43,7 +45,21 @@ public static DatabaseType fromDisplayName(String 
displayName) {
     };
   }
 
-  public String getInitScriptResource() {
-    return String.format("%s/schema-v1.sql", this.getDisplayName());
+  public String getInitScriptResource(@Nonnull SchemaOptions schemaOptions) {
+    final String schemaFile;
+    if (schemaOptions.schemaFile() != null) {
+      schemaFile = schemaOptions.schemaFile();
+    } else {
+      String schemaSuffix;
+      switch (schemaOptions.schemaVersion()) {
+        case SchemaOptions.LATEST -> schemaSuffix = "schema-v1.sql";

Review Comment:
   suggestion: make `schemaVersion()` optional and default to latest.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@polaris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to