mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:37:35 +00:00
LibSQL+SQLServer+SQLStudio+sql: Allocate per-statement-execution IDs
In order to execute a prepared statement multiple times, and track each execution's results, clients will need to be provided an execution ID. This will create a monotonically increasing ID each time a prepared statement is executed for this purpose.
This commit is contained in:
parent
e2f71d2808
commit
aec75d749a
10 changed files with 66 additions and 51 deletions
|
@ -28,17 +28,21 @@ public:
|
|||
static RefPtr<SQLStatement> statement_for(u64 statement_id);
|
||||
u64 statement_id() const { return m_statement_id; }
|
||||
DatabaseConnection* connection() { return dynamic_cast<DatabaseConnection*>(parent()); }
|
||||
void execute(Vector<SQL::Value> placeholder_values);
|
||||
Optional<u64> execute(Vector<SQL::Value> placeholder_values);
|
||||
|
||||
private:
|
||||
SQLStatement(DatabaseConnection&, NonnullRefPtr<SQL::AST::Statement> statement);
|
||||
|
||||
bool should_send_result_rows() const;
|
||||
void next();
|
||||
void report_error(SQL::Result);
|
||||
void next(u64 execution_id);
|
||||
void report_error(SQL::Result, u64 execution_id);
|
||||
|
||||
u64 m_statement_id { 0 };
|
||||
size_t m_index { 0 };
|
||||
|
||||
HashTable<u64> m_ongoing_executions;
|
||||
u64 m_next_execution_id { 0 };
|
||||
|
||||
NonnullRefPtr<SQL::AST::Statement> m_statement;
|
||||
Optional<SQL::ResultSet> m_result {};
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue