You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jb...@apache.org on 2016/01/26 16:52:57 UTC

[1/2] lucene-solr git commit: SOLR-8518: Implement ResultSetMetaDataImpl getColumnType and getColumnTypeName

Repository: lucene-solr
Updated Branches:
  refs/heads/master 85ae19803 -> bc815b520


SOLR-8518: Implement ResultSetMetaDataImpl getColumnType and getColumnTypeName


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/3654fc33
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/3654fc33
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/3654fc33

Branch: refs/heads/master
Commit: 3654fc33b9e2ac0066d03ae864dea418d27f8841
Parents: 0ff8d11
Author: jbernste <jb...@apache.org>
Authored: Tue Jan 26 10:55:32 2016 -0500
Committer: jbernste <jb...@apache.org>
Committed: Tue Jan 26 10:55:32 2016 -0500

----------------------------------------------------------------------
 .../solr/client/solrj/io/sql/ResultSetImpl.java | 18 ++++++++++--
 .../solrj/io/sql/ResultSetMetaDataImpl.java     | 29 ++++++++++++++++++--
 .../solr/client/solrj/io/sql/StatementImpl.java |  1 -
 .../solr/client/solrj/io/sql/JdbcTest.java      | 11 ++++++++
 4 files changed, 52 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3654fc33/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetImpl.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetImpl.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetImpl.java
index d1edc0c..31fc39f 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetImpl.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetImpl.java
@@ -41,13 +41,14 @@ import java.util.Calendar;
 import java.util.Map;
 
 import org.apache.solr.client.solrj.io.Tuple;
-import org.apache.solr.client.solrj.io.stream.SolrStream;
+import org.apache.solr.client.solrj.io.stream.PushBackStream;
 
 class ResultSetImpl implements ResultSet {
   private final StatementImpl statement;
-  private final SolrStream solrStream;
+  private final PushBackStream solrStream;
   private final ResultSetMetaData resultSetMetaData;
   private final Tuple metadataTuple;
+  private final Tuple firstTuple;
   private Tuple tuple;
   private boolean done;
   private boolean closed;
@@ -55,7 +56,7 @@ class ResultSetImpl implements ResultSet {
 
   ResultSetImpl(StatementImpl statement) {
     this.statement = statement;
-    this.solrStream = statement.getSolrStream();
+    this.solrStream = new PushBackStream(statement.getSolrStream());
 
     // Read the first tuple so that metadata can be gathered
     try {
@@ -69,6 +70,13 @@ class ResultSetImpl implements ResultSet {
       throw new RuntimeException("Couldn't get metadata tuple");
     }
 
+    try {
+      this.firstTuple = this.solrStream.read();
+      this.solrStream.pushBack(firstTuple);
+    } catch (IOException e) {
+      throw new RuntimeException("Couldn't get first tuple.");
+    }
+
     this.resultSetMetaData = new ResultSetMetaDataImpl(this);
   }
 
@@ -76,6 +84,10 @@ class ResultSetImpl implements ResultSet {
     return this.metadataTuple;
   }
 
+  Tuple getFirstTuple() {
+    return this.firstTuple;
+  }
+
   private void checkClosed() throws SQLException {
     if(isClosed()) {
       throw new SQLException("ResultSet is closed.");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3654fc33/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetMetaDataImpl.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetMetaDataImpl.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetMetaDataImpl.java
index 8351140..d59db87 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetMetaDataImpl.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ResultSetMetaDataImpl.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.sql;
 
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
+import java.sql.Types;
 import java.util.List;
 
 import org.apache.solr.client.solrj.io.Tuple;
@@ -26,10 +27,21 @@ import org.apache.solr.client.solrj.io.Tuple;
 class ResultSetMetaDataImpl implements ResultSetMetaData {
   private final ResultSetImpl resultSet;
   private final Tuple metadataTuple;
+  private final Tuple firstTuple;
 
   ResultSetMetaDataImpl(ResultSetImpl resultSet) {
     this.resultSet = resultSet;
     this.metadataTuple = this.resultSet.getMetadataTuple();
+    this.firstTuple = this.resultSet.getFirstTuple();
+  }
+
+  private Class getColumnClass(int column) throws SQLException {
+    Object o = this.firstTuple.get(this.getColumnName(column));
+    if(o == null) {
+      return String.class; //Nulls will only be present with Strings.
+    } else {
+      return o.getClass();
+    }
   }
 
   @Override
@@ -117,12 +129,23 @@ class ResultSetMetaDataImpl implements ResultSetMetaData {
 
   @Override
   public int getColumnType(int column) throws SQLException {
-    return 0;
+    switch (getColumnTypeName(column)) {
+      case "String":
+        return Types.VARCHAR;
+      case "Integer":
+        return Types.INTEGER;
+      case "Long":
+        return Types.DOUBLE;
+      case "Double":
+        return Types.DOUBLE;
+      default:
+        return Types.JAVA_OBJECT;
+    }
   }
 
   @Override
   public String getColumnTypeName(int column) throws SQLException {
-    return null;
+    return this.getColumnClass(column).getSimpleName();
   }
 
   @Override
@@ -142,7 +165,7 @@ class ResultSetMetaDataImpl implements ResultSetMetaData {
 
   @Override
   public String getColumnClassName(int column) throws SQLException {
-    return null;
+    return this.getColumnClass(column).getTypeName();
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3654fc33/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/StatementImpl.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/StatementImpl.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/StatementImpl.java
index bea6488..1c1bc21 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/StatementImpl.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/StatementImpl.java
@@ -59,7 +59,6 @@ class StatementImpl implements Statement {
 
   @Override
   public ResultSet executeQuery(String sql) throws SQLException {
-
     try {
       if(this.currentResultSet != null) {
         this.currentResultSet.close();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3654fc33/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
index 617399b..9fe7226 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
@@ -24,6 +24,7 @@ import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.Statement;
+import java.sql.Types;
 import java.util.Properties;
 
 import org.apache.lucene.util.LuceneTestCase;
@@ -403,6 +404,16 @@ public class JdbcTest extends AbstractFullDistribZkTestBase {
     assertNotNull(resultSetMetaData);
 
     assertEquals(4, resultSetMetaData.getColumnCount());
+
+    assertEquals("Long", resultSetMetaData.getColumnTypeName(1));
+    assertEquals("Long", resultSetMetaData.getColumnTypeName(2));
+    assertEquals("String", resultSetMetaData.getColumnTypeName(3));
+    assertEquals("Double", resultSetMetaData.getColumnTypeName(4));
+
+    assertEquals(Types.DOUBLE, resultSetMetaData.getColumnType(1));
+    assertEquals(Types.DOUBLE, resultSetMetaData.getColumnType(2));
+    assertEquals(Types.VARCHAR, resultSetMetaData.getColumnType(3));
+    assertEquals(Types.DOUBLE, resultSetMetaData.getColumnType(4));
   }
 
   private void checkResultSet(ResultSet rs) throws Exception {


[2/2] lucene-solr git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/lucene-solr

Posted by jb...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/lucene-solr


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

Branch: refs/heads/master
Commit: bc815b5207638c676810699bae592fc8f3d93abd
Parents: 3654fc3 85ae198
Author: jbernste <jb...@apache.org>
Authored: Tue Jan 26 10:57:07 2016 -0500
Committer: jbernste <jb...@apache.org>
Committed: Tue Jan 26 10:57:07 2016 -0500

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |   5 +
 .../apache/lucene/index/PrefixCodedTerms.java   |  21 ++--
 .../apache/lucene/index/memory/MemoryIndex.java | 107 +++++++++++++------
 .../lucene/index/memory/TestMemoryIndex.java    |  27 +++++
 .../org/apache/lucene/queries/TermsQuery.java   |  52 +++++----
 .../lucene/queries/CommonTermsQueryTest.java    |   2 +-
 .../apache/lucene/search/TestGeoPointQuery.java |  35 ++++++
 .../lucene/search/TestLatLonPointQueries.java   |  25 ++++-
 .../lucene/util/BaseGeoPointTestCase.java       |   1 -
 .../org/apache/solr/cloud/SyncStrategy.java     |   2 +-
 .../apache/solr/search/facet/FacetRequest.java  |  10 +-
 .../solr/search/facet/TestJsonFacets.java       |  22 +++-
 12 files changed, 240 insertions(+), 69 deletions(-)
----------------------------------------------------------------------