1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:07:35 +00:00

LibSQL+SQLServer+SQLStudio+sql: Send result rows over IPC as SQL::Value

We've been sending the values converted to a string, but now that the
Value type is transferrable over IPC, send the values themselves. Any
client that wants the value as a string may do so easily, whereas this
will allow less trivial clients to avoid string parsing.
This commit is contained in:
Timothy Flynn 2022-12-03 11:34:30 -05:00 committed by Andreas Kling
parent 27ce88864f
commit b9d8c25b0b
8 changed files with 17 additions and 18 deletions

View file

@ -25,12 +25,13 @@ void SQLClient::execution_success(u64 statement_id, u64 execution_id, bool has_r
outln("{} row(s) created, {} updated, {} deleted", created, updated, deleted);
}
void SQLClient::next_result(u64 statement_id, u64 execution_id, Vector<DeprecatedString> const& row)
void SQLClient::next_result(u64 statement_id, u64 execution_id, Vector<SQL::Value> const& row)
{
if (on_next_result) {
on_next_result(statement_id, execution_id, row);
return;
}
bool first = true;
for (auto& column : row) {
if (!first)

View file

@ -22,7 +22,7 @@ class SQLClient
Function<void(u64, u64, SQLErrorCode, DeprecatedString const&)> on_execution_error;
Function<void(u64, u64, bool, size_t, size_t, size_t)> on_execution_success;
Function<void(u64, u64, Vector<DeprecatedString> const&)> on_next_result;
Function<void(u64, u64, Span<SQL::Value const>)> on_next_result;
Function<void(u64, u64, size_t)> on_results_exhausted;
private:
@ -32,7 +32,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 next_result(u64 statement_id, u64 execution_id, Vector<DeprecatedString> 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 execution_error(u64 statement_id, u64 execution_id, SQLErrorCode const& code, DeprecatedString const& message) override;
};

View file

@ -176,15 +176,6 @@ DeprecatedString Tuple::to_deprecated_string() const
return builder.build();
}
Vector<DeprecatedString> Tuple::to_deprecated_string_vector() const
{
Vector<DeprecatedString> ret;
for (auto& value : m_data) {
ret.append(value.to_deprecated_string());
}
return ret;
}
void Tuple::copy_from(Tuple const& other)
{
if (*m_descriptor != *other.m_descriptor) {

View file

@ -37,7 +37,6 @@ public:
[[nodiscard]] DeprecatedString to_deprecated_string() const;
explicit operator DeprecatedString() const { return to_deprecated_string(); }
[[nodiscard]] Vector<DeprecatedString> to_deprecated_string_vector() const;
bool operator<(Tuple const& other) const { return compare(other) < 0; }
bool operator<=(Tuple const& other) const { return compare(other) <= 0; }
@ -69,6 +68,8 @@ public:
[[nodiscard]] int match(Tuple const&) const;
[[nodiscard]] u32 hash() const;
[[nodiscard]] Vector<Value> take_data() { return move(m_data); }
protected:
[[nodiscard]] Optional<size_t> index_of(StringView) const;
void copy_from(Tuple const&);