mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:07:35 +00:00
LibSQL+SQLServer: Send result column names over IPC to SQL clients
This commit is contained in:
parent
d6dee8c0e8
commit
cb06031180
4 changed files with 10 additions and 8 deletions
|
@ -154,7 +154,7 @@ ErrorOr<NonnullRefPtr<SQLClient>> SQLClient::launch_server_and_create_client(Vec
|
||||||
|
|
||||||
#endif
|
#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<DeprecatedString> const& column_names, bool has_results, size_t created, size_t updated, size_t deleted)
|
||||||
{
|
{
|
||||||
if (!on_execution_success) {
|
if (!on_execution_success) {
|
||||||
outln("{} row(s) created, {} updated, {} deleted", created, updated, deleted);
|
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 {
|
ExecutionSuccess success {
|
||||||
.statement_id = statement_id,
|
.statement_id = statement_id,
|
||||||
.execution_id = execution_id,
|
.execution_id = execution_id,
|
||||||
|
.column_names = move(const_cast<Vector<DeprecatedString>&>(column_names)),
|
||||||
.has_results = has_results,
|
.has_results = has_results,
|
||||||
.rows_created = created,
|
.rows_created = created,
|
||||||
.rows_updated = updated,
|
.rows_updated = updated,
|
||||||
|
|
|
@ -19,6 +19,7 @@ struct ExecutionSuccess {
|
||||||
u64 statement_id { 0 };
|
u64 statement_id { 0 };
|
||||||
u64 execution_id { 0 };
|
u64 execution_id { 0 };
|
||||||
|
|
||||||
|
Vector<DeprecatedString> column_names;
|
||||||
bool has_results { false };
|
bool has_results { false };
|
||||||
size_t rows_created { 0 };
|
size_t rows_created { 0 };
|
||||||
size_t rows_updated { 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<DeprecatedString> 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 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<SQL::Value> const&) override;
|
virtual void next_result(u64 statement_id, u64 execution_id, Vector<SQL::Value> const&) override;
|
||||||
virtual void results_exhausted(u64 statement_id, u64 execution_id, size_t total_rows) override;
|
virtual void results_exhausted(u64 statement_id, u64 execution_id, size_t total_rows) override;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
endpoint SQLClient
|
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<DeprecatedString> column_names, bool has_results, size_t created, size_t updated, size_t deleted) =|
|
||||||
next_result(u64 statement_id, u64 execution_id, Vector<SQL::Value> row) =|
|
next_result(u64 statement_id, u64 execution_id, Vector<SQL::Value> row) =|
|
||||||
results_exhausted(u64 statement_id, u64 execution_id, size_t total_rows) =|
|
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) =|
|
execution_error(u64 statement_id, u64 execution_id, SQL::SQLErrorCode code, DeprecatedString message) =|
|
||||||
|
|
|
@ -89,19 +89,19 @@ Optional<SQL::ExecutionID> SQLStatement::execute(Vector<SQL::Value> placeholder_
|
||||||
auto result = execution_result.release_value();
|
auto result = execution_result.release_value();
|
||||||
|
|
||||||
if (should_send_result_rows(result)) {
|
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();
|
auto result_size = result.size();
|
||||||
next(execution_id, move(result), result_size);
|
next(execution_id, move(result), result_size);
|
||||||
} else {
|
} else {
|
||||||
if (result.command() == SQL::SQLCommand::Insert)
|
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)
|
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)
|
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
|
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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue