You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by jh...@apache.org on 2013/10/13 16:22:15 UTC
git commit: TAJO-243: The 'tajo_dump' does not include options of
table. (jinho)
Updated Branches:
refs/heads/master b23c2b5fe -> 56a8e2404
TAJO-243: The 'tajo_dump' does not include options of table. (jinho)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/56a8e240
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/56a8e240
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/56a8e240
Branch: refs/heads/master
Commit: 56a8e240471223e46b96f715bfcdd51305ad97f2
Parents: b23c2b5
Author: jinossy <ji...@gmail.com>
Authored: Sun Oct 13 23:21:19 2013 +0900
Committer: jinossy <ji...@gmail.com>
Committed: Sun Oct 13 23:21:19 2013 +0900
----------------------------------------------------------------------
CHANGES.txt | 2 +
.../org/apache/tajo/catalog/TableMetaImpl.java | 14 +++----
.../tajo/catalog/store/AbstractDBStore.java | 41 ++++++++------------
.../apache/tajo/engine/parser/SQLAnalyzer.java | 4 +-
.../tajo/engine/query/TestNullValues.java | 2 +-
.../java/org/apache/tajo/storage/CSVFile.java | 4 +-
6 files changed, 30 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/56a8e240/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ae4ff35..98e29c8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -197,6 +197,8 @@ Release 0.2.0 - unreleased
BUG FIXES
+ TAJO-243: The 'tajo_dump' does not include options of table. (jinho)
+
TAJO-244: assignToNonLeafTasks causes NPE occurs occasionally. (hyunsik)
TAJO-242: Enable omitted broadcast join feature after TAJO-184. (hyunsik)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/56a8e240/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableMetaImpl.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableMetaImpl.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableMetaImpl.java
index 0f054a4..0bf1615 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableMetaImpl.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableMetaImpl.java
@@ -139,20 +139,20 @@ public class TableMetaImpl implements TableMeta, GsonObject {
@Override
public Options getOptions() {
- return options;
- }
-
- @Override
- public Map<String,String> toMap() {
TableProtoOrBuilder p = viaProto ? proto : builder;
if (options != null) {
- return this.options.getAllKeyValus();
+ return this.options;
}
if (!p.hasParams()) {
return null;
}
this.options = new Options(p.getParams());
- return options.getAllKeyValus();
+ return options;
+ }
+
+ @Override
+ public Map<String,String> toMap() {
+ return getOptions().getAllKeyValus();
}
public boolean equals(Object object) {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/56a8e240/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
index 71e4dd0..33e3bff 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
@@ -37,7 +37,6 @@ import org.apache.tajo.exception.InternalException;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
@@ -218,16 +217,24 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
columnId++;
}
- Iterator<Entry<String, String>> it = table.getMeta().toMap().entrySet().iterator();
- String optSql;
- while (it.hasNext()) {
- optSql = keyvalToSQL(table, it.next());
- if (LOG.isDebugEnabled()) {
- LOG.debug(optSql);
+
+ String optSql = String.format("INSERT INTO %s (%s, key_, value_) VALUES(?, ?, ?)", TB_OPTIONS, C_TABLE_ID);
+ PreparedStatement pstmt = getConnection().prepareStatement(optSql);
+ try {
+ for (Entry<String, String> entry : table.getMeta().toMap().entrySet()) {
+ pstmt.setString(1, table.getName());
+ pstmt.setString(2, entry.getKey());
+ pstmt.setString(3, entry.getValue());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(optSql);
+ }
+ pstmt.addBatch();
}
- stmt.addBatch(optSql);
+ pstmt.executeBatch();
+ } finally {
+ CatalogUtil.closeSQLWrapper(pstmt);
}
- stmt.executeBatch();
+
if (table.getMeta().getStat() != null) {
sql = "INSERT INTO " + TB_STATISTICS + " (" + C_TABLE_ID + ", num_rows, num_bytes) "
+ "VALUES ('" + table.getName() + "', "
@@ -263,20 +270,6 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
return sql;
}
- private String keyvalToSQL(final TableDesc desc,
- final Entry<String, String> keyVal) {
- String sql =
- "INSERT INTO " + TB_OPTIONS
- + " (" + C_TABLE_ID + ", key_, value_) "
- + "VALUES("
- + "'" + desc.getName() + "',"
- + "'" + keyVal.getKey() + "',"
- + "'" + keyVal.getValue() + "'"
- + ")";
-
- return sql;
- }
-
@Override
public boolean existTable(final String name) throws IOException {
StringBuilder sql = new StringBuilder();
@@ -749,4 +742,4 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
CatalogUtil.closeSQLWrapper(conn);
LOG.info("Shutdown database (" + jdbcUri + ")");
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/56a8e240/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
index 49494a9..bdd85ce 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
@@ -1075,9 +1075,7 @@ public class SQLAnalyzer extends SQLParserBaseVisitor<Expr> {
for (Map.Entry<String, String> entry : map.entrySet()) {
if (entry.getKey().equals(CSVFile.DELIMITER)) {
params.put(entry.getKey(), escapeDelimiter(entry.getValue()));
- } else if (entry.getKey().equals(CSVFile.NULL)) {
- params.put(entry.getKey(), StringEscapeUtils.unescapeJava(entry.getValue()));
- } else {
+ } else {
params.put(entry.getKey(), entry.getValue());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/56a8e240/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/query/TestNullValues.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
index 4c0eec8..b0778d4 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
@@ -147,7 +147,7 @@ public class TestNullValues {
};
Options opts = new Options();
opts.put(CSVFile.DELIMITER, ",");
- opts.put(CSVFile.NULL, "\\N");
+ opts.put(CSVFile.NULL, "\\\\N");
ResultSet res = TajoTestingCluster
.run(table, schemas, opts, new String[][]{data},
"select * from nulltable4 where col1 is null and col2 is null and col3 is null and col5 is null and col4 = 43578");
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/56a8e240/tajo-core/tajo-core-storage/src/main/java/org/apache/tajo/storage/CSVFile.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-storage/src/main/java/org/apache/tajo/storage/CSVFile.java b/tajo-core/tajo-core-storage/src/main/java/org/apache/tajo/storage/CSVFile.java
index 3021f7d..58d772e 100644
--- a/tajo-core/tajo-core-storage/src/main/java/org/apache/tajo/storage/CSVFile.java
+++ b/tajo-core/tajo-core-storage/src/main/java/org/apache/tajo/storage/CSVFile.java
@@ -78,7 +78,7 @@ public class CSVFile {
this.schema = meta.getSchema();
this.delimiter = StringEscapeUtils.unescapeJava(this.meta.getOption(DELIMITER, DELIMITER_DEFAULT)).charAt(0);
- String nullCharacters = this.meta.getOption(NULL);
+ String nullCharacters = StringEscapeUtils.unescapeJava(this.meta.getOption(NULL));
if (StringUtils.isEmpty(nullCharacters)) {
nullChars = NullDatum.get().asTextBytes();
} else {
@@ -306,7 +306,7 @@ public class CSVFile {
String delim = fragment.getMeta().getOption(DELIMITER, DELIMITER_DEFAULT);
this.delimiter = StringEscapeUtils.unescapeJava(delim).charAt(0);
- String nullCharacters = fragment.getMeta().getOption(NULL);
+ String nullCharacters = StringEscapeUtils.unescapeJava(fragment.getMeta().getOption(NULL));
if (StringUtils.isEmpty(nullCharacters)) {
nullChars = NullDatum.get().asTextBytes();
} else {