You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2016/02/15 07:52:09 UTC

tajo git commit: TAJO-1939: Implement PgSQLTablespace::getTableVolume() method.

Repository: tajo
Updated Branches:
  refs/heads/master 4743c6ea3 -> d73f129b4


TAJO-1939: Implement PgSQLTablespace::getTableVolume() method.

Closes #960


Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/d73f129b
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/d73f129b
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/d73f129b

Branch: refs/heads/master
Commit: d73f129b4b2de5d753697f697c927b743db695fa
Parents: 4743c6e
Author: Jihoon Son <ji...@apache.org>
Authored: Mon Feb 15 15:51:30 2016 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Mon Feb 15 15:51:30 2016 +0900

----------------------------------------------------------------------
 CHANGES                                         |  2 ++
 .../tajo/querymaster/DefaultTaskScheduler.java  |  7 +++--
 .../tajo/storage/pgsql/PgSQLTablespace.java     | 28 +++++++++++++++++---
 .../storage/pgsql/TestPgSQLJdbcTableSpace.java  | 11 ++++++++
 .../tajo/storage/pgsql/TestPgSQLQueryTests.java |  5 ++--
 5 files changed, 44 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/d73f129b/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 0c2ba89..8a52067 100644
--- a/CHANGES
+++ b/CHANGES
@@ -192,6 +192,8 @@ Release 0.12.0 - unreleased
 
   TASKS
 
+    TAJO-1939: Implement PgSQLTablespace::getTableVolume() method. (jihoon)
+
     TAJO-2017: Replace manual array copy with Collection.
     (Dongkyu Hwangbo via jinho)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/d73f129b/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java
index be30af2..e290184 100644
--- a/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java
+++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java
@@ -47,7 +47,6 @@ import org.apache.tajo.rpc.NettyClientBase;
 import org.apache.tajo.rpc.RpcClientManager;
 import org.apache.tajo.service.ServiceTracker;
 import org.apache.tajo.storage.DataLocation;
-import org.apache.tajo.storage.fragment.FileFragment;
 import org.apache.tajo.storage.fragment.Fragment;
 import org.apache.tajo.util.NetUtils;
 import org.apache.tajo.util.RpcParameterFactory;
@@ -216,14 +215,14 @@ public class DefaultTaskScheduler extends AbstractTaskScheduler {
           }
           stage.getEventHandler().handle(new TaskEvent(task.getId(), TaskEventType.T_SCHEDULE));
         } else {
-          fragmentsForNonLeafTask = new FileFragment[2];
+          fragmentsForNonLeafTask = new Fragment[2];
           fragmentsForNonLeafTask[0] = castEvent.getLeftFragment();
           if (castEvent.hasRightFragments()) {
             Collection<Fragment> var = castEvent.getRightFragments();
-            FileFragment[] rightFragments = var.toArray(new FileFragment[var.size()]);
+            Fragment[] rightFragments = var.toArray(new Fragment[var.size()]);
             fragmentsForNonLeafTask[1] = rightFragments[0];
             if (rightFragments.length > 1) {
-              broadcastFragmentsForNonLeafTask = new FileFragment[rightFragments.length - 1];
+              broadcastFragmentsForNonLeafTask = new Fragment[rightFragments.length - 1];
               System.arraycopy(rightFragments, 1, broadcastFragmentsForNonLeafTask, 0, broadcastFragmentsForNonLeafTask.length);
             } else {
               broadcastFragmentsForNonLeafTask = null;

http://git-wip-us.apache.org/repos/asf/tajo/blob/d73f129b/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java b/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java
index f44c85d..8386f74 100644
--- a/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java
+++ b/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java
@@ -19,10 +19,11 @@
 package org.apache.tajo.storage.pgsql;
 
 import net.minidev.json.JSONObject;
-import org.apache.tajo.catalog.MetadataProvider;
-import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.TableMeta;
+import org.apache.tajo.catalog.*;
 import org.apache.tajo.exception.TajoInternalError;
+import org.apache.tajo.exception.TajoRuntimeException;
+import org.apache.tajo.exception.UndefinedTableException;
+import org.apache.tajo.plan.expr.EvalNode;
 import org.apache.tajo.storage.NullScanner;
 import org.apache.tajo.storage.Scanner;
 import org.apache.tajo.storage.fragment.Fragment;
@@ -32,6 +33,10 @@ import org.apache.tajo.storage.jdbc.JdbcTablespace;
 import javax.annotation.Nullable;
 import java.io.IOException;
 import java.net.URI;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Optional;
 
 /**
  * Postgresql Database Tablespace
@@ -73,4 +78,21 @@ public class PgSQLTablespace extends JdbcTablespace {
   public int hashCode() {
     throw new UnsupportedOperationException();
   }
+
+  @Override
+  public long getTableVolume(TableDesc table, Optional<EvalNode> filter) {
+
+    String sql = "SELECT pg_table_size('" + CatalogUtil.extractSimpleName(table.getName()) + "')";
+
+    try (Statement stmt = conn.createStatement();
+         ResultSet rs = stmt.executeQuery(sql)) {
+      if (rs.next()) {
+        return rs.getLong(1);
+      } else {
+        throw new TajoRuntimeException(new UndefinedTableException(table.getName()));
+      }
+    } catch (SQLException e) {
+      throw new TajoInternalError(e);
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/d73f129b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLJdbcTableSpace.java
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLJdbcTableSpace.java b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLJdbcTableSpace.java
index 59af23d..0d0e15e 100644
--- a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLJdbcTableSpace.java
+++ b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLJdbcTableSpace.java
@@ -24,6 +24,8 @@ import org.apache.tajo.catalog.TableDesc;
 import org.apache.tajo.conf.TajoConf;
 import org.apache.tajo.exception.TajoException;
 import org.apache.tajo.exception.TajoRuntimeException;
+import org.apache.tajo.exception.UndefinedTablespaceException;
+import org.apache.tajo.exception.UnsupportedException;
 import org.apache.tajo.storage.Tablespace;
 import org.apache.tajo.storage.TablespaceManager;
 import org.apache.tajo.storage.fragment.Fragment;
@@ -134,4 +136,13 @@ public class TestPgSQLJdbcTableSpace {
 
     TablespaceManager.addTableSpaceForTest(ts.get());
   }
+
+  @Test
+  public void testGetTableVolume() throws UndefinedTablespaceException, UnsupportedException {
+    Tablespace space = TablespaceManager.getByName("pgsql_cluster");
+    MetadataProvider provider = space.getMetadataProvider();
+    TableDesc table = provider.getTableDesc(null, "lineitem");
+    long volume = space.getTableVolume(table, Optional.empty());
+    assertEquals(8192, volume);
+  }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/d73f129b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java
index 766eda3..34c9238 100644
--- a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java
+++ b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLQueryTests.java
@@ -117,8 +117,9 @@ public class TestPgSQLQueryTests extends QueryTestCaseBase {
     runSimpleTests();
   }
 
-  @SimpleTest
-  @Test
+//  @SimpleTest
+//  @Test
+  // TODO: enable this test after allowing consecutive cross joins (TAJO-2075)
   @Option(sort = true)
   public void testTPCH_Q5() throws Exception {
     runSimpleTests();