You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2023/02/26 04:46:28 UTC

[arrow-flight-sql-postgresql] branch main updated: Add support for `SELECT FROM` (#22)

This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-flight-sql-postgresql.git


The following commit(s) were added to refs/heads/main by this push:
     new aab75b4  Add support for `SELECT FROM` (#22)
aab75b4 is described below

commit aab75b4537a4882d28da8757884fcf8d0b36384e
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Sun Feb 26 13:46:23 2023 +0900

    Add support for `SELECT FROM` (#22)
    
    Close GH-12
---
 src/afs.cc              | 10 ++++++----
 test/test-flight-sql.rb | 15 +++++++++++++++
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/afs.cc b/src/afs.cc
index 4677b2b..f070974 100644
--- a/src/afs.cc
+++ b/src/afs.cc
@@ -203,6 +203,7 @@ class Executor : public WorkerProcessor {
 		sharedData_->executeData.buffer.data = InvalidDsaPointer;
 		sharedData_->executeData.buffer.total = 0;
 		sharedData_->executeData.buffer.used = 0;
+		sharedData_->executorPID = InvalidPid;
 		LWLockRelease(lock_);
 		pgstat_report_activity(STATE_IDLE, NULL);
 	}
@@ -278,7 +279,7 @@ class Executor : public WorkerProcessor {
 			arrow::RecordBatchBuilder::Make(schema, arrow::default_memory_pool()));
 		for (uint64_t iTuple = 0; iTuple < SPI_processed; ++iTuple)
 		{
-			for (uint64_t iAttribute = 0; iAttribute < SPI_tuptable->numvals;
+			for (uint64_t iAttribute = 0; iAttribute < SPI_tuptable->tupdesc->natts;
 			     ++iAttribute)
 			{
 				bool isNull;
@@ -410,7 +411,7 @@ class MainProcessor : public Processor {
 	{
 		BackgroundWorker worker = {0};
 		snprintf(worker.bgw_name, BGW_MAXLEN, "%s: server", Tag);
-		snprintf(worker.bgw_type, BGW_MAXLEN, Tag);
+		snprintf(worker.bgw_type, BGW_MAXLEN, "%s: server", Tag);
 		worker.bgw_flags = BGWORKER_SHMEM_ACCESS;
 		worker.bgw_start_time = BgWorkerStart_ConsistentState;
 		worker.bgw_restart_time = BGW_NEVER_RESTART;
@@ -435,8 +436,9 @@ class MainProcessor : public Processor {
 		}
 
 		BackgroundWorker worker = {0};
+		// TODO: Add executor ID to bgw_name
 		snprintf(worker.bgw_name, BGW_MAXLEN, "%s: executor", Tag);
-		snprintf(worker.bgw_type, BGW_MAXLEN, Tag);
+		snprintf(worker.bgw_type, BGW_MAXLEN, "%s: executor", Tag);
 		worker.bgw_flags = BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION;
 		worker.bgw_start_time = BgWorkerStart_ConsistentState;
 		worker.bgw_restart_time = BGW_NEVER_RESTART;
@@ -694,7 +696,7 @@ _PG_init(void)
 
 	BackgroundWorker worker = {0};
 	snprintf(worker.bgw_name, BGW_MAXLEN, "%s: main", Tag);
-	snprintf(worker.bgw_type, BGW_MAXLEN, Tag);
+	snprintf(worker.bgw_type, BGW_MAXLEN, "%s: main", Tag);
 	worker.bgw_flags = BGWORKER_SHMEM_ACCESS;
 	worker.bgw_start_time = BgWorkerStart_ConsistentState;
 	worker.bgw_restart_time = BGW_NEVER_RESTART;
diff --git a/test/test-flight-sql.rb b/test/test-flight-sql.rb
index 02b4f9f..2b26e09 100644
--- a/test/test-flight-sql.rb
+++ b/test/test-flight-sql.rb
@@ -29,4 +29,19 @@ class FlightSQLTest < Test::Unit::TestCase
     assert_equal(Arrow::Table.new(value: Arrow::Int32Array.new([1])),
                  reader.read_all)
   end
+
+  def test_select_from
+    run_sql("CREATE TABLE data (value integer)")
+    run_sql("INSERT INTO data VALUES (1), (-2), (3)")
+
+    options = ArrowFlight::CallOptions.new
+    options.add_header("x-flight-sql-database", @test_db_name)
+    info = flight_sql_client.execute("SELECT * FROM data", options)
+    assert_equal(Arrow::Schema.new(value: :int32),
+                 info.get_schema)
+    endpoint = info.endpoints.first
+    reader = flight_sql_client.do_get(endpoint.ticket, options)
+    assert_equal(Arrow::Table.new(value: Arrow::Int32Array.new([1, -2, 3])),
+                 reader.read_all)
+  end
 end