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