This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new 757700dc refactor(c/driver/postgresql): Macro for benchmark return
(#1202)
757700dc is described below
commit 757700dcad54bd1d9d005d46cbeb61e638aeef78
Author: William Ayd <[email protected]>
AuthorDate: Fri Oct 20 08:22:45 2023 -0400
refactor(c/driver/postgresql): Macro for benchmark return (#1202)
---
c/driver/postgresql/postgresql_benchmark.cc | 163 +++++++++++-----------------
1 file changed, 64 insertions(+), 99 deletions(-)
diff --git a/c/driver/postgresql/postgresql_benchmark.cc
b/c/driver/postgresql/postgresql_benchmark.cc
index 2f5a050f..239575a7 100644
--- a/c/driver/postgresql/postgresql_benchmark.cc
+++ b/c/driver/postgresql/postgresql_benchmark.cc
@@ -22,6 +22,20 @@
#include "adbc.h"
#include "validation/adbc_validation_util.h"
+#define _ADBC_BENCHMARK_RETURN_NOT_OK_IMPL(NAME, EXPR) \
+ do { \
+ const int NAME = (EXPR); \
+ if (NAME) { \
+ state.SkipWithError(error.message); \
+ error.release(&error); \
+ return; \
+ } \
+ } while (0)
+
+#define ADBC_BENCHMARK_RETURN_NOT_OK(EXPR) \
+ _ADBC_BENCHMARK_RETURN_NOT_OK_IMPL(_NANOARROW_MAKE_NAME(errno_status_, \
+ __COUNTER__), EXPR)
+
static void BM_PostgresqlExecute(benchmark::State& state) {
const char* uri = std::getenv("ADBC_POSTGRESQL_TEST_URI");
@@ -32,84 +46,55 @@ static void BM_PostgresqlExecute(benchmark::State& state) {
adbc_validation::Handle<struct AdbcDatabase> database;
struct AdbcError error;
- if (AdbcDatabaseNew(&database.value, &error) != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
-
- if (AdbcDatabaseSetOption(&database.value, "uri", uri, &error) !=
ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
-
- if (AdbcDatabaseInit(&database.value, &error) != ADBC_STATUS_OK) {
-state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcDatabaseNew(&database.value, &error));
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcDatabaseSetOption(&database.value,
+ "uri",
+ uri,
+ &error));
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcDatabaseInit(&database.value, &error));
adbc_validation::Handle<struct AdbcConnection> connection;
- if (AdbcConnectionNew(&connection.value, &error) != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
-
- if (AdbcConnectionInit(&connection.value, &database.value, &error) !=
ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcConnectionNew(&connection.value, &error));
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcConnectionInit(&connection.value,
+ &database.value,
+ &error));
adbc_validation::Handle<struct AdbcStatement> statement;
- if (AdbcStatementNew(&connection.value, &statement.value, &error) !=
ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementNew(&connection.value,
+ &statement.value,
+ &error));
const char* drop_query = "DROP TABLE IF EXISTS
adbc_postgresql_ingest_benchmark";
- if (AdbcStatementSetSqlQuery(&statement.value, drop_query, &error)
- != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementSetSqlQuery(&statement.value,
+ drop_query,
+ &error));
- if (AdbcStatementExecuteQuery(&statement.value, nullptr, nullptr, &error)
- != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementExecuteQuery(&statement.value,
+ nullptr,
+ nullptr,
+ &error));
adbc_validation::Handle<struct ArrowSchema> schema;
adbc_validation::Handle<struct ArrowArray> array;
struct ArrowError na_error;
- if (adbc_validation::MakeSchema(&schema.value, {
+ ADBC_BENCHMARK_RETURN_NOT_OK(adbc_validation::MakeSchema(&schema.value, {
{"bools", NANOARROW_TYPE_BOOL},
{"int16s", NANOARROW_TYPE_INT16},
{"int32s", NANOARROW_TYPE_INT32},
{"int64s", NANOARROW_TYPE_INT64},
{"floats", NANOARROW_TYPE_FLOAT},
{"doubles", NANOARROW_TYPE_DOUBLE},
- }) != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ }));
if (ArrowArrayInitFromSchema(&array.value, &schema.value, &na_error) !=
NANOARROW_OK) {
- state.SkipWithError(error.message);
+ state.SkipWithError("Call to ArrowArrayInitFromSchema failed!");
error.release(&error);
return;
}
if (ArrowArrayStartAppending(&array.value) != NANOARROW_OK) {
- state.SkipWithError(error.message);
+ state.SkipWithError("Call to ArrowArrayStartAppending failed!");
error.release(&error);
return;
}
@@ -142,7 +127,7 @@ state.SkipWithError(error.message);
array.value.length = n_zeros + n_ones;
if (ArrowArrayFinishBuildingDefault(&array.value, &na_error) !=
NANOARROW_OK) {
- state.SkipWithError(error.message);
+ state.SkipWithError("Call to ArrowArrayFinishBuildingDefault failed");
error.release(&error);
return;
}
@@ -151,63 +136,43 @@ state.SkipWithError(error.message);
"CREATE TABLE adbc_postgresql_ingest_benchmark (bools BOOLEAN, int16s
SMALLINT, "
"int32s INTEGER, int64s BIGINT, floats REAL, doubles DOUBLE PRECISION)";
- if (AdbcStatementSetSqlQuery(&statement.value, create_query, &error)
- != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementSetSqlQuery(&statement.value,
+ create_query,
+ &error));
- if (AdbcStatementExecuteQuery(&statement.value, nullptr, nullptr, &error)
- != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementExecuteQuery(&statement.value,
+ nullptr,
+ nullptr,
+ &error));
adbc_validation::Handle<struct AdbcStatement> insert_stmt;
- if (AdbcStatementNew(&connection.value, &insert_stmt.value, &error) !=
ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementNew(&connection.value,
+ &insert_stmt.value,
+ &error));
- if (AdbcStatementSetOption(&insert_stmt.value,
- ADBC_INGEST_OPTION_TARGET_TABLE,
- "adbc_postgresql_ingest_benchmark",
- &error) != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementSetOption(&insert_stmt.value,
+
ADBC_INGEST_OPTION_TARGET_TABLE,
+
"adbc_postgresql_ingest_benchmark",
+ &error));
- if (AdbcStatementSetOption(&insert_stmt.value,
- ADBC_INGEST_OPTION_MODE,
- ADBC_INGEST_OPTION_MODE_APPEND,
- &error) != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementSetOption(&insert_stmt.value,
+ ADBC_INGEST_OPTION_MODE,
+
ADBC_INGEST_OPTION_MODE_APPEND,
+ &error));
for (auto _ : state) {
AdbcStatementBind(&insert_stmt.value, &array.value, &schema.value, &error);
AdbcStatementExecuteQuery(&insert_stmt.value, nullptr, nullptr, &error);
}
- if (AdbcStatementSetSqlQuery(&statement.value, drop_query, &error)
- != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementSetSqlQuery(&statement.value,
+ drop_query,
+ &error));
- if (AdbcStatementExecuteQuery(&statement.value, nullptr, nullptr, &error)
- != ADBC_STATUS_OK) {
- state.SkipWithError(error.message);
- error.release(&error);
- return;
- }
+ ADBC_BENCHMARK_RETURN_NOT_OK(AdbcStatementExecuteQuery(&statement.value,
+ nullptr,
+ nullptr,
+ &error));
}
BENCHMARK(BM_PostgresqlExecute)->Iterations(1);