diff --git a/Userland/Libraries/LibSQL/SQLClient.cpp b/Userland/Libraries/LibSQL/SQLClient.cpp index 1b0705ed16..923a115611 100644 --- a/Userland/Libraries/LibSQL/SQLClient.cpp +++ b/Userland/Libraries/LibSQL/SQLClient.cpp @@ -154,7 +154,7 @@ ErrorOr> SQLClient::launch_server_and_create_client(Vec #endif -void SQLClient::execution_success(u64 statement_id, u64 execution_id, bool has_results, size_t created, size_t updated, size_t deleted) +void SQLClient::execution_success(u64 statement_id, u64 execution_id, Vector const& column_names, bool has_results, size_t created, size_t updated, size_t deleted) { if (!on_execution_success) { outln("{} row(s) created, {} updated, {} deleted", created, updated, deleted); @@ -164,6 +164,7 @@ void SQLClient::execution_success(u64 statement_id, u64 execution_id, bool has_r ExecutionSuccess success { .statement_id = statement_id, .execution_id = execution_id, + .column_names = move(const_cast&>(column_names)), .has_results = has_results, .rows_created = created, .rows_updated = updated, diff --git a/Userland/Libraries/LibSQL/SQLClient.h b/Userland/Libraries/LibSQL/SQLClient.h index 97c37a7ea8..6949d1d7d2 100644 --- a/Userland/Libraries/LibSQL/SQLClient.h +++ b/Userland/Libraries/LibSQL/SQLClient.h @@ -19,6 +19,7 @@ struct ExecutionSuccess { u64 statement_id { 0 }; u64 execution_id { 0 }; + Vector column_names; bool has_results { false }; size_t rows_created { 0 }; size_t rows_updated { 0 }; @@ -70,7 +71,7 @@ private: { } - virtual void execution_success(u64 statement_id, u64 execution_id, bool has_results, size_t created, size_t updated, size_t deleted) override; + virtual void execution_success(u64 statement_id, u64 execution_id, Vector const& column_names, bool has_results, size_t created, size_t updated, size_t deleted) override; virtual void execution_error(u64 statement_id, u64 execution_id, SQLErrorCode const& code, DeprecatedString const& message) override; virtual void next_result(u64 statement_id, u64 execution_id, Vector const&) override; virtual void results_exhausted(u64 statement_id, u64 execution_id, size_t total_rows) override; diff --git a/Userland/Services/SQLServer/SQLClient.ipc b/Userland/Services/SQLServer/SQLClient.ipc index 90fddd5880..8f26f79e1f 100644 --- a/Userland/Services/SQLServer/SQLClient.ipc +++ b/Userland/Services/SQLServer/SQLClient.ipc @@ -3,7 +3,7 @@ endpoint SQLClient { - execution_success(u64 statement_id, u64 execution_id, bool has_results, size_t created, size_t updated, size_t deleted) =| + execution_success(u64 statement_id, u64 execution_id, Vector column_names, bool has_results, size_t created, size_t updated, size_t deleted) =| next_result(u64 statement_id, u64 execution_id, Vector row) =| results_exhausted(u64 statement_id, u64 execution_id, size_t total_rows) =| execution_error(u64 statement_id, u64 execution_id, SQL::SQLErrorCode code, DeprecatedString message) =| diff --git a/Userland/Services/SQLServer/SQLStatement.cpp b/Userland/Services/SQLServer/SQLStatement.cpp index d95337acd7..7a9eec6911 100644 --- a/Userland/Services/SQLServer/SQLStatement.cpp +++ b/Userland/Services/SQLServer/SQLStatement.cpp @@ -89,19 +89,19 @@ Optional SQLStatement::execute(Vector placeholder_ auto result = execution_result.release_value(); if (should_send_result_rows(result)) { - client_connection->async_execution_success(statement_id(), execution_id, true, 0, 0, 0); + client_connection->async_execution_success(statement_id(), execution_id, result.column_names(), true, 0, 0, 0); auto result_size = result.size(); next(execution_id, move(result), result_size); } else { if (result.command() == SQL::SQLCommand::Insert) - client_connection->async_execution_success(statement_id(), execution_id, false, result.size(), 0, 0); + client_connection->async_execution_success(statement_id(), execution_id, result.column_names(), false, result.size(), 0, 0); else if (result.command() == SQL::SQLCommand::Update) - client_connection->async_execution_success(statement_id(), execution_id, false, 0, result.size(), 0); + client_connection->async_execution_success(statement_id(), execution_id, result.column_names(), false, 0, result.size(), 0); else if (result.command() == SQL::SQLCommand::Delete) - client_connection->async_execution_success(statement_id(), execution_id, false, 0, 0, result.size()); + client_connection->async_execution_success(statement_id(), execution_id, result.column_names(), false, 0, 0, result.size()); else - client_connection->async_execution_success(statement_id(), execution_id, false, 0, 0, 0); + client_connection->async_execution_success(statement_id(), execution_id, result.column_names(), false, 0, 0, 0); } });