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 ba1c072 Expand error codes, add vendor-specific codes (#21)
ba1c072 is described below
commit ba1c072606d3b188c3c533f0fe0b1c1b2e035f56
Author: David Li <[email protected]>
AuthorDate: Thu Jun 23 10:06:55 2022 -0400
Expand error codes, add vendor-specific codes (#21)
Fixes #20.
---
adbc.h | 96 +++++++++++++++++++++++++-----
adbc_driver_manager/adbc_driver_manager.cc | 52 +++++++++-------
drivers/flight_sql/flight_sql.cc | 40 ++++++-------
drivers/sqlite/sqlite.cc | 58 +++++++++---------
4 files changed, 159 insertions(+), 87 deletions(-)
diff --git a/adbc.h b/adbc.h
index 4be0d78..9e1ed97 100644
--- a/adbc.h
+++ b/adbc.h
@@ -158,26 +158,91 @@ struct AdbcStatement;
/// Error codes for operations that may fail.
typedef uint8_t AdbcStatusCode;
-/// No error.
+/// \brief No error.
#define ADBC_STATUS_OK 0
-/// An unknown error occurred.
+/// \brief An unknown error occurred.
+///
+/// May indicate a driver-side or database-side error.
#define ADBC_STATUS_UNKNOWN 1
-/// The operation is not implemented.
+/// \brief The operation is not implemented or supported.
+///
+/// May indicate a driver-side or database-side error.
#define ADBC_STATUS_NOT_IMPLEMENTED 2
-/// An operation was attempted on an uninitialized object.
-#define ADBC_STATUS_UNINITIALIZED 3
-/// The arguments are invalid.
-#define ADBC_STATUS_INVALID_ARGUMENT 4
-/// The object is in an invalid state for the given operation.
-#define ADBC_STATUS_INTERNAL 5
-/// An I/O error occurred.
-#define ADBC_STATUS_IO 6
+/// \brief A requested resource was not found.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_NOT_FOUND 3
+/// \brief A requested resource already exists.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_ALREADY_EXISTS 4
+/// \brief The arguments are invalid, likely a programming error.
+///
+/// For instance, they may be of the wrong format, or out of range.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_INVALID_ARGUMENT 5
+/// \brief The preconditions for the operation are not met, likely a
+/// programming error.
+///
+/// For instance, the object may be uninitialized, or may have not
+/// been fully configured.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_INVALID_STATE 6
+/// \brief Invalid data was processed (not a programming error).
+///
+/// For instance, a division by zero may have occurred during query
+/// execution.
+///
+/// May indicate a database-side error only.
+#define ADBC_STATUS_INVALID_DATA 7
+/// \brief The database's integrity was affected.
+///
+/// For instance, a foreign key check may have failed, or a uniqueness
+/// constraint may have been violated.
+///
+/// May indicate a database-side error only.
+#define ADBC_STATUS_INTEGRITY 8
+/// \brief An error internal to the driver or database occurred.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_INTERNAL 9
+/// \brief An I/O error occurred.
+///
+/// For instance, a remote service may be unavailable.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_IO 10
+/// \brief The operation was cancelled, not due to a timeout.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_CANCELLED 11
+/// \brief The operation was cancelled due to a timeout.
+///
+/// May indicate a driver-side or database-side error.
+#define ADBC_STATUS_TIMEOUT 12
+/// \brief Authentication failed.
+///
+/// May indicate a database-side error only.
+#define ADBC_STATUS_UNAUTHENTICATED 13
+/// \brief The client is not authorized to perform the given operation.
+///
+/// May indicate a database-side error only.
+#define ADBC_STATUS_UNAUTHORIZED 14
/// \brief A detailed error message for an operation.
struct ADBC_EXPORT AdbcError {
/// \brief The error message.
char* message;
+ /// \brief A vendor-specific error code, if applicable.
+ int32_t vendor_code;
+
+ /// \brief A SQLSTATE error code, if provided, as defined by the
+ /// SQL:2003 standard.
+ char sqlstate[5];
+
/// \brief Release the contained error.
///
/// Unlike other structures, this is an embedded callback to make it
@@ -687,11 +752,10 @@ AdbcStatusCode AdbcStatementGetPartitionDesc(struct
AdbcStatement* statement,
/// \brief An instance of an initialized database driver.
///
-/// This provides a common interface for implementation-specific
-/// driver initialization routines. Drivers should populate this
-/// struct, and applications can call ADBC functions through this
-/// struct, without worrying about multiple definitions of the same
-/// symbol.
+/// This provides a common interface for vendor-specific driver
+/// initialization routines. Drivers should populate this struct, and
+/// applications can call ADBC functions through this struct, without
+/// worrying about multiple definitions of the same symbol.
struct ADBC_EXPORT AdbcDriver {
/// \brief Opaque driver-defined state.
/// This field is NULLPTR if the driver is unintialized/freed (but
diff --git a/adbc_driver_manager/adbc_driver_manager.cc
b/adbc_driver_manager/adbc_driver_manager.cc
index 0572300..e120f59 100644
--- a/adbc_driver_manager/adbc_driver_manager.cc
+++ b/adbc_driver_manager/adbc_driver_manager.cc
@@ -193,7 +193,7 @@ AdbcStatusCode AdbcDatabaseSetOption(struct AdbcDatabase*
database, const char*
AdbcStatusCode AdbcDatabaseInit(struct AdbcDatabase* database, struct
AdbcError* error) {
if (!database->private_data) {
SetError(error, "Must call AdbcDatabaseNew first");
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
TempDatabase* args = reinterpret_cast<TempDatabase*>(database->private_data);
if (args->driver.empty()) {
@@ -264,7 +264,7 @@ AdbcStatusCode AdbcDatabaseInit(struct AdbcDatabase*
database, struct AdbcError*
AdbcStatusCode AdbcDatabaseRelease(struct AdbcDatabase* database,
struct AdbcError* error) {
if (!database->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = database->private_driver->DatabaseRelease(database, error);
if (database->private_driver->release) {
@@ -278,7 +278,7 @@ AdbcStatusCode AdbcConnectionNew(struct AdbcDatabase*
database,
struct AdbcConnection* connection,
struct AdbcError* error) {
if (!database->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = database->private_driver->ConnectionNew(database, connection,
error);
connection->private_driver = database->private_driver;
@@ -288,7 +288,7 @@ AdbcStatusCode AdbcConnectionNew(struct AdbcDatabase*
database,
AdbcStatusCode AdbcConnectionInit(struct AdbcConnection* connection,
struct AdbcError* error) {
if (!connection->private_driver) {
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
return connection->private_driver->ConnectionInit(connection, error);
}
@@ -296,7 +296,7 @@ AdbcStatusCode AdbcConnectionInit(struct AdbcConnection*
connection,
AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection* connection,
struct AdbcError* error) {
if (!connection->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = connection->private_driver->ConnectionRelease(connection,
error);
connection->private_driver = nullptr;
@@ -307,7 +307,7 @@ AdbcStatusCode AdbcStatementBind(struct AdbcStatement*
statement,
struct ArrowArray* values, struct
ArrowSchema* schema,
struct AdbcError* error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementBind(statement, values, schema,
error);
}
@@ -316,7 +316,7 @@ AdbcStatusCode AdbcStatementBindStream(struct
AdbcStatement* statement,
struct ArrowArrayStream* stream,
struct AdbcError* error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementBindStream(statement, stream,
error);
}
@@ -324,7 +324,7 @@ AdbcStatusCode AdbcStatementBindStream(struct
AdbcStatement* statement,
AdbcStatusCode AdbcStatementExecute(struct AdbcStatement* statement,
struct AdbcError* error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementExecute(statement, error);
}
@@ -333,7 +333,7 @@ AdbcStatusCode AdbcStatementGetStream(struct AdbcStatement*
statement,
struct ArrowArrayStream* out,
struct AdbcError* error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementGetStream(statement, out, error);
}
@@ -342,7 +342,7 @@ AdbcStatusCode AdbcStatementNew(struct AdbcConnection*
connection,
struct AdbcStatement* statement,
struct AdbcError* error) {
if (!connection->private_driver) {
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = connection->private_driver->StatementNew(connection,
statement, error);
statement->private_driver = connection->private_driver;
@@ -352,7 +352,7 @@ AdbcStatusCode AdbcStatementNew(struct AdbcConnection*
connection,
AdbcStatusCode AdbcStatementPrepare(struct AdbcStatement* statement,
struct AdbcError* error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementPrepare(statement, error);
}
@@ -360,7 +360,7 @@ AdbcStatusCode AdbcStatementPrepare(struct AdbcStatement*
statement,
AdbcStatusCode AdbcStatementRelease(struct AdbcStatement* statement,
struct AdbcError* error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = statement->private_driver->StatementRelease(statement, error);
statement->private_driver = nullptr;
@@ -370,7 +370,7 @@ AdbcStatusCode AdbcStatementRelease(struct AdbcStatement*
statement,
AdbcStatusCode AdbcStatementSetOption(struct AdbcStatement* statement, const
char* key,
const char* value, struct AdbcError*
error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementSetOption(statement, key, value,
error);
}
@@ -378,7 +378,7 @@ AdbcStatusCode AdbcStatementSetOption(struct AdbcStatement*
statement, const cha
AdbcStatusCode AdbcStatementSetSqlQuery(struct AdbcStatement* statement,
const char* query, struct AdbcError*
error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementSetSqlQuery(statement, query,
error);
}
@@ -387,7 +387,7 @@ AdbcStatusCode AdbcStatementSetSubstraitPlan(struct
AdbcStatement* statement,
const uint8_t* plan, size_t
length,
struct AdbcError* error) {
if (!statement->private_driver) {
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
return statement->private_driver->StatementSetSubstraitPlan(statement, plan,
length,
error);
@@ -401,13 +401,21 @@ const char* AdbcStatusCodeMessage(AdbcStatusCode code) {
return STRINGIFY(CONSTANT) " (" STRINGIFY_VALUE(CONSTANT) ")";
switch (code) {
- CASE(ADBC_STATUS_OK)
- CASE(ADBC_STATUS_UNKNOWN)
- CASE(ADBC_STATUS_NOT_IMPLEMENTED)
- CASE(ADBC_STATUS_UNINITIALIZED)
- CASE(ADBC_STATUS_INVALID_ARGUMENT)
- CASE(ADBC_STATUS_INTERNAL)
- CASE(ADBC_STATUS_IO)
+ CASE(ADBC_STATUS_OK);
+ CASE(ADBC_STATUS_UNKNOWN);
+ CASE(ADBC_STATUS_NOT_IMPLEMENTED);
+ CASE(ADBC_STATUS_NOT_FOUND);
+ CASE(ADBC_STATUS_ALREADY_EXISTS);
+ CASE(ADBC_STATUS_INVALID_ARGUMENT);
+ CASE(ADBC_STATUS_INVALID_STATE);
+ CASE(ADBC_STATUS_INVALID_DATA);
+ CASE(ADBC_STATUS_INTEGRITY);
+ CASE(ADBC_STATUS_INTERNAL);
+ CASE(ADBC_STATUS_IO);
+ CASE(ADBC_STATUS_CANCELLED);
+ CASE(ADBC_STATUS_TIMEOUT);
+ CASE(ADBC_STATUS_UNAUTHENTICATED);
+ CASE(ADBC_STATUS_UNAUTHORIZED);
default:
return "(invalid code)";
}
diff --git a/drivers/flight_sql/flight_sql.cc b/drivers/flight_sql/flight_sql.cc
index e54f979..370450f 100644
--- a/drivers/flight_sql/flight_sql.cc
+++ b/drivers/flight_sql/flight_sql.cc
@@ -72,7 +72,7 @@ class FlightSqlDatabaseImpl {
AdbcStatusCode Init(struct AdbcError* error) {
if (client_) {
SetError(error, "Database already initialized");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
auto it = options_.find("location");
if (it == options_.end()) {
@@ -102,7 +102,7 @@ class FlightSqlDatabaseImpl {
AdbcStatusCode SetOption(const char* key, const char* value, struct
AdbcError* error) {
if (client_) {
SetError(error, "Database already initialized");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
options_[key] = value;
return ADBC_STATUS_OK;
@@ -156,7 +156,7 @@ class FlightSqlConnectionImpl {
client_ = database_->Connect();
if (!client_) {
SetError(error, "Database not yet initialized!");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
return ADBC_STATUS_OK;
}
@@ -225,7 +225,7 @@ class FlightSqlStatementImpl : public
arrow::RecordBatchReader {
struct ArrowArrayStream* out, struct AdbcError*
error) {
if (!info_) {
SetError(error, "Statement has not yet been executed");
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = NextStream();
@@ -293,7 +293,7 @@ class FlightSqlStatementImpl : public
arrow::RecordBatchReader {
AdbcStatusCode GetPartitionDescSize(size_t* length, struct AdbcError* error)
const {
if (!info_) {
SetError(error, "Statement has not yet been executed");
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
// TODO: we're only encoding the ticket, not the actual locations
@@ -308,7 +308,7 @@ class FlightSqlStatementImpl : public
arrow::RecordBatchReader {
AdbcStatusCode GetPartitionDesc(uint8_t* partition_desc, struct AdbcError*
error) {
if (!info_) {
SetError(error, "Statement has not yet been executed");
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
if (next_endpoint_ >= info_->endpoints().size()) {
@@ -355,7 +355,7 @@ AdbcStatusCode FlightSqlDatabaseNew(struct AdbcDatabase*
database,
AdbcStatusCode FlightSqlDatabaseSetOption(struct AdbcDatabase* database, const
char* key,
const char* value, struct AdbcError*
error) {
- if (!database || !database->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!database || !database->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<FlightSqlDatabaseImpl>*>(database->private_data);
return (*ptr)->SetOption(key, value, error);
@@ -363,7 +363,7 @@ AdbcStatusCode FlightSqlDatabaseSetOption(struct
AdbcDatabase* database, const c
AdbcStatusCode FlightSqlDatabaseInit(struct AdbcDatabase* database,
struct AdbcError* error) {
- if (!database->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!database->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<FlightSqlDatabaseImpl>*>(database->private_data);
return (*ptr)->Init(error);
@@ -371,7 +371,7 @@ AdbcStatusCode FlightSqlDatabaseInit(struct AdbcDatabase*
database,
AdbcStatusCode FlightSqlDatabaseRelease(struct AdbcDatabase* database,
struct AdbcError* error) {
- if (!database->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!database->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<FlightSqlDatabaseImpl>*>(database->private_data);
AdbcStatusCode status = (*ptr)->Release(error);
@@ -383,7 +383,7 @@ AdbcStatusCode FlightSqlDatabaseRelease(struct
AdbcDatabase* database,
AdbcStatusCode FlightSqlConnectionDeserializePartitionDesc(
struct AdbcConnection* connection, const uint8_t* serialized_partition,
size_t serialized_length, struct AdbcStatement* statement, struct
AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
return (*ptr)->DeserializePartitionDesc(serialized_partition,
serialized_length, error);
@@ -392,7 +392,7 @@ AdbcStatusCode FlightSqlConnectionDeserializePartitionDesc(
AdbcStatusCode FlightSqlConnectionGetTableTypes(struct AdbcConnection*
connection,
struct AdbcStatement*
statement,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
return (*ptr)->GetTableTypes(error);
@@ -416,7 +416,7 @@ AdbcStatusCode FlightSqlConnectionSetOption(struct
AdbcConnection* connection,
AdbcStatusCode FlightSqlConnectionInit(struct AdbcConnection* connection,
struct AdbcError* error) {
- if (!connection->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!connection->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr = reinterpret_cast<std::shared_ptr<FlightSqlConnectionImpl>*>(
connection->private_data);
return (*ptr)->Init(error);
@@ -424,7 +424,7 @@ AdbcStatusCode FlightSqlConnectionInit(struct
AdbcConnection* connection,
AdbcStatusCode FlightSqlConnectionRelease(struct AdbcConnection* connection,
struct AdbcError* error) {
- if (!connection->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!connection->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr = reinterpret_cast<std::shared_ptr<FlightSqlConnectionImpl>*>(
connection->private_data);
auto status = (*ptr)->Close(error);
@@ -435,7 +435,7 @@ AdbcStatusCode FlightSqlConnectionRelease(struct
AdbcConnection* connection,
AdbcStatusCode FlightSqlStatementExecute(struct AdbcStatement* statement,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
return (*ptr)->Execute(*ptr, error);
@@ -444,7 +444,7 @@ AdbcStatusCode FlightSqlStatementExecute(struct
AdbcStatement* statement,
AdbcStatusCode FlightSqlStatementGetPartitionDesc(struct AdbcStatement*
statement,
uint8_t* partition_desc,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
return (*ptr)->GetPartitionDesc(partition_desc, error);
@@ -453,7 +453,7 @@ AdbcStatusCode FlightSqlStatementGetPartitionDesc(struct
AdbcStatement* statemen
AdbcStatusCode FlightSqlStatementGetPartitionDescSize(struct AdbcStatement*
statement,
size_t* length,
struct AdbcError* error)
{
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
return (*ptr)->GetPartitionDescSize(length, error);
@@ -462,7 +462,7 @@ AdbcStatusCode
FlightSqlStatementGetPartitionDescSize(struct AdbcStatement* stat
AdbcStatusCode FlightSqlStatementGetStream(struct AdbcStatement* statement,
struct ArrowArrayStream* out,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
return (*ptr)->GetStream(*ptr, out, error);
@@ -480,7 +480,7 @@ AdbcStatusCode FlightSqlStatementNew(struct AdbcConnection*
connection,
AdbcStatusCode FlightSqlStatementRelease(struct AdbcStatement* statement,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
auto status = (*ptr)->Close(error);
@@ -491,7 +491,7 @@ AdbcStatusCode FlightSqlStatementRelease(struct
AdbcStatement* statement,
AdbcStatusCode FlightSqlStatementSetSqlQuery(struct AdbcStatement* statement,
const char* query, struct
AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<FlightSqlStatementImpl>*>(statement->private_data);
return (*ptr)->SetSqlQuery(*ptr, query, error);
@@ -593,7 +593,7 @@ AdbcStatusCode AdbcStatementSetSqlQuery(struct
AdbcStatement* statement,
}
extern "C" {
-ARROW_EXPORT
+ADBC_EXPORT
AdbcStatusCode AdbcFlightSqlDriverInit(size_t count, struct AdbcDriver* driver,
size_t* initialized, struct AdbcError*
error) {
if (count < ADBC_VERSION_0_0_1) return ADBC_STATUS_NOT_IMPLEMENTED;
diff --git a/drivers/sqlite/sqlite.cc b/drivers/sqlite/sqlite.cc
index 74f6cd2..c11ec23 100644
--- a/drivers/sqlite/sqlite.cc
+++ b/drivers/sqlite/sqlite.cc
@@ -165,7 +165,7 @@ class SqliteDatabaseImpl {
AdbcStatusCode Init(struct AdbcError* error) {
if (db_) {
SetError(error, "Database already initialized");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
const char* filename = ":memory:";
auto it = options_.find("filename");
@@ -181,7 +181,7 @@ class SqliteDatabaseImpl {
AdbcStatusCode SetOption(const char* key, const char* value, struct
AdbcError* error) {
if (db_) {
SetError(error, "Database already initialized");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
options_[key] = value;
return ADBC_STATUS_OK;
@@ -191,7 +191,7 @@ class SqliteDatabaseImpl {
std::lock_guard<std::mutex> guard(mutex_);
if (--connection_count_ < 0) {
SetError(error, "Connection count underflow");
- return ADBC_STATUS_INTERNAL;
+ return ADBC_STATUS_INVALID_STATE;
}
return ADBC_STATUS_OK;
}
@@ -202,13 +202,13 @@ class SqliteDatabaseImpl {
if (connection_count_ > 0) {
SetError(error, "Cannot release database with ", connection_count_,
" open connections");
- return ADBC_STATUS_INTERNAL;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = sqlite3_close(db_);
if (status != SQLITE_OK) {
if (db_) SetError(db_, "sqlite3_close", error);
- return ADBC_STATUS_UNKNOWN;
+ return ADBC_STATUS_IO;
}
return ADBC_STATUS_OK;
}
@@ -234,7 +234,7 @@ class SqliteConnectionImpl {
(db_schema && std::strlen(db_schema) > 0)) {
std::memset(schema, 0, sizeof(*schema));
SetError(error, "Catalog/schema are not supported");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_NOT_IMPLEMENTED;
}
std::string query = "SELECT * FROM ";
@@ -264,7 +264,7 @@ class SqliteConnectionImpl {
db_ = database_->Connect();
if (!db_) {
SetError(error, "Database not yet initialized!");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
return ADBC_STATUS_OK;
}
@@ -482,14 +482,14 @@ class SqliteStatementImpl {
auto status = arrow::ImportRecordBatch(values, schema).Value(&batch);
if (!status.ok()) {
SetError(error, status);
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INTERNAL;
}
std::shared_ptr<arrow::Table> table;
status = arrow::Table::FromRecordBatches({std::move(batch)}).Value(&table);
if (!status.ok()) {
SetError(error, status);
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INTERNAL;
}
bind_parameters_.reset(new arrow::TableBatchReader(std::move(table)));
@@ -501,7 +501,7 @@ class SqliteStatementImpl {
auto status =
arrow::ImportRecordBatchReader(stream).Value(&bind_parameters_);
if (!status.ok()) {
SetError(error, status);
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INTERNAL;
}
return ADBC_STATUS_OK;
}
@@ -514,7 +514,7 @@ class SqliteStatementImpl {
return ExecuteBulk(error);
}
SetError(error, "Cannot execute a statement without a query");
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
AdbcStatusCode GetObjects(const std::shared_ptr<SqliteStatementImpl>& self,
int depth,
@@ -921,7 +921,7 @@ class SqliteStatementImpl {
struct ArrowArrayStream* out, struct AdbcError*
error) {
if (!result_reader_) {
SetError(error, "Statement has not yet been executed");
- return ADBC_STATUS_UNINITIALIZED;
+ return ADBC_STATUS_INVALID_STATE;
}
auto status = arrow::ExportRecordBatchReader(result_reader_, out);
if (!status.ok()) {
@@ -964,7 +964,7 @@ class SqliteStatementImpl {
AdbcStatusCode ExecuteBulk(struct AdbcError* error) {
if (!bind_parameters_) {
SetError(error, "Must AdbcStatementBind for bulk insertion");
- return ADBC_STATUS_INVALID_ARGUMENT;
+ return ADBC_STATUS_INVALID_STATE;
}
sqlite3* db = connection_->db();
@@ -1107,7 +1107,7 @@ AdbcStatusCode SqliteDatabaseNew(struct AdbcDatabase*
database, struct AdbcError
AdbcStatusCode SqliteDatabaseInit(struct AdbcDatabase* database,
struct AdbcError* error) {
- if (!database->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!database->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteDatabaseImpl>*>(database->private_data);
return (*ptr)->Init(error);
@@ -1115,7 +1115,7 @@ AdbcStatusCode SqliteDatabaseInit(struct AdbcDatabase*
database,
AdbcStatusCode SqliteDatabaseSetOption(struct AdbcDatabase* database, const
char* key,
const char* value, struct AdbcError*
error) {
- if (!database || !database->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!database || !database->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteDatabaseImpl>*>(database->private_data);
return (*ptr)->SetOption(key, value, error);
@@ -1123,7 +1123,7 @@ AdbcStatusCode SqliteDatabaseSetOption(struct
AdbcDatabase* database, const char
AdbcStatusCode SqliteDatabaseRelease(struct AdbcDatabase* database,
struct AdbcError* error) {
- if (!database->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!database->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteDatabaseImpl>*>(database->private_data);
AdbcStatusCode status = (*ptr)->Release(error);
@@ -1136,7 +1136,7 @@ AdbcStatusCode SqliteConnectionGetObjects(
struct AdbcConnection* connection, int depth, const char* catalog,
const char* db_schema, const char* table_name, const char** table_types,
const char* column_name, struct AdbcStatement* statement, struct
AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->GetObjects(*ptr, depth, catalog, db_schema, table_name,
table_types,
@@ -1148,7 +1148,7 @@ AdbcStatusCode SqliteConnectionGetTableSchema(struct
AdbcConnection* connection,
const char* table_name,
struct ArrowSchema* schema,
struct AdbcError* error) {
- if (!connection->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!connection->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteConnectionImpl>*>(connection->private_data);
return (*ptr)->GetTableSchema(catalog, db_schema, table_name, schema, error);
@@ -1157,7 +1157,7 @@ AdbcStatusCode SqliteConnectionGetTableSchema(struct
AdbcConnection* connection,
AdbcStatusCode SqliteConnectionGetTableTypes(struct AdbcConnection* connection,
struct AdbcStatement* statement,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->GetTableTypes(*ptr, error);
@@ -1165,7 +1165,7 @@ AdbcStatusCode SqliteConnectionGetTableTypes(struct
AdbcConnection* connection,
AdbcStatusCode SqliteConnectionInit(struct AdbcConnection* connection,
struct AdbcError* error) {
- if (!connection->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!connection->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteConnectionImpl>*>(connection->private_data);
return (*ptr)->Init(error);
@@ -1183,7 +1183,7 @@ AdbcStatusCode SqliteConnectionNew(struct AdbcDatabase*
database,
AdbcStatusCode SqliteConnectionRelease(struct AdbcConnection* connection,
struct AdbcError* error) {
- if (!connection->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!connection->private_data) return ADBC_STATUS_INVALID_STATE;
auto ptr =
reinterpret_cast<std::shared_ptr<SqliteConnectionImpl>*>(connection->private_data);
AdbcStatusCode status = (*ptr)->Release(error);
@@ -1201,7 +1201,7 @@ AdbcStatusCode SqliteConnectionSetOption(struct
AdbcConnection* connection,
AdbcStatusCode SqliteStatementBind(struct AdbcStatement* statement,
struct ArrowArray* values, struct
ArrowSchema* schema,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->Bind(*ptr, values, schema, error);
@@ -1210,7 +1210,7 @@ AdbcStatusCode SqliteStatementBind(struct AdbcStatement*
statement,
AdbcStatusCode SqliteStatementBindStream(struct AdbcStatement* statement,
struct ArrowArrayStream* stream,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->Bind(*ptr, stream, error);
@@ -1218,7 +1218,7 @@ AdbcStatusCode SqliteStatementBindStream(struct
AdbcStatement* statement,
AdbcStatusCode SqliteStatementExecute(struct AdbcStatement* statement,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->Execute(*ptr, error);
@@ -1239,7 +1239,7 @@ AdbcStatusCode SqliteStatementGetPartitionDescSize(struct
AdbcStatement* stateme
AdbcStatusCode SqliteStatementGetStream(struct AdbcStatement* statement,
struct ArrowArrayStream* out,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->GetStream(*ptr, out, error);
@@ -1257,14 +1257,14 @@ AdbcStatusCode SqliteStatementNew(struct
AdbcConnection* connection,
AdbcStatusCode SqliteStatementPrepare(struct AdbcStatement* statement,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
// No-op
return ADBC_STATUS_OK;
}
AdbcStatusCode SqliteStatementRelease(struct AdbcStatement* statement,
struct AdbcError* error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
auto status = (*ptr)->Close(error);
@@ -1275,7 +1275,7 @@ AdbcStatusCode SqliteStatementRelease(struct
AdbcStatement* statement,
AdbcStatusCode SqliteStatementSetOption(struct AdbcStatement* statement, const
char* key,
const char* value, struct AdbcError*
error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->SetOption(*ptr, key, value, error);
@@ -1283,7 +1283,7 @@ AdbcStatusCode SqliteStatementSetOption(struct
AdbcStatement* statement, const c
AdbcStatusCode SqliteStatementSetSqlQuery(struct AdbcStatement* statement,
const char* query, struct AdbcError*
error) {
- if (!statement->private_data) return ADBC_STATUS_UNINITIALIZED;
+ if (!statement->private_data) return ADBC_STATUS_INVALID_STATE;
auto* ptr =
reinterpret_cast<std::shared_ptr<SqliteStatementImpl>*>(statement->private_data);
return (*ptr)->SetSqlQuery(*ptr, query, error);