[
https://issues.apache.org/jira/browse/TAJO-1109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14206230#comment-14206230
]
ASF GitHub Bot commented on TAJO-1109:
--------------------------------------
Github user hyunsik commented on a diff in the pull request:
https://github.com/apache/tajo/pull/216#discussion_r20141159
--- Diff:
tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
---
@@ -176,42 +202,47 @@ public Connection getConnection() {
return conn;
}
- private void verifySchemaVersion() throws CatalogException {
+ private int getSchemaVersion() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet result = null;
+ int schemaVersion = -1;
+
+ String sql = "SELECT version FROM META";
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(sql.toString());
+ }
try {
- String sql = "SELECT version FROM META";
- if (LOG.isDebugEnabled()) {
- LOG.debug(sql.toString());
- }
-
conn = getConnection();
pstmt = conn.prepareStatement(sql);
result = pstmt.executeQuery();
- boolean noVersion = !result.next();
-
- int schemaVersion = result.getInt(1);
- if (noVersion || schemaVersion != getDriverVersion()) {
- LOG.error(String.format("Catalog version (%d) and current driver
version (%d) are mismatch to each other",
- schemaVersion, getDriverVersion()));
-
LOG.error("=========================================================================");
- LOG.error("| Catalog Store Migration Is Needed
|");
-
LOG.error("=========================================================================");
- LOG.error("| You might downgrade or upgrade Apache Tajo.
Downgrading or upgrading |");
- LOG.error("| Tajo without migration process is only available in
some versions. |");
- LOG.error("| In order to learn how to migration Apache Tajo
instance, |");
- LOG.error("| please refer http://s.apache.org/0_8_migration.
|");
-
LOG.error("=========================================================================");
- throw new CatalogException("Migration Needed. Please refer
http://s.apache.org/0_8_migration.");
+ if (result.next()) {
+ schemaVersion = result.getInt("VERSION");
}
} catch (SQLException e) {
- throw new CatalogException(e);
+ throw new CatalogException(e.getMessage(), e);
} finally {
CatalogUtil.closeQuietly(pstmt, result);
}
+
+ return schemaVersion;
+ }
+
+ private void verifySchemaVersion() throws CatalogException {
+ int schemaVersion = -1;
+
+ schemaVersion = getSchemaVersion();
+
+ if (schemaVersion == -1 || schemaVersion != getDriverVersion()) {
+ LOG.info(String.format("Catalog version (%d) and current driver
version (%d) are mismatch to each other",
+ schemaVersion, getDriverVersion()));
+ LOG.info("It will start upgrade process on catalog stores.");
+
+ catalogSchemaManager.upgradeBaseSchema(getConnection(),
schemaVersion);
--- End diff --
I agree with your point. Your suggestion would be very helpful to engineers
who don't want to manage RDBMSs. When our catalog becomes stable, we can add
the upgrade approach.
> Separate SQL Statements from Catalog Stores
> -------------------------------------------
>
> Key: TAJO-1109
> URL: https://issues.apache.org/jira/browse/TAJO-1109
> Project: Tajo
> Issue Type: Improvement
> Components: catalog
> Reporter: Jihun Kang
> Assignee: Jihun Kang
> Priority: Minor
> Fix For: 0.9.1
>
> Attachments: DBMSSchemaDefinition.xsd, derby.xml
>
>
> When developing the additional catalog stores for another database systems,
> it is needed to add additional sql statements such as triggers and indexes.
> These sql statements could increase the code size of catalog store, and when
> database schema has changed, it may affect the catalog store source codes. I
> feel that it is needed to separate the sql statements from the java source
> codes.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)