diff --git a/src/include/sqlite_stmt.hpp b/src/include/sqlite_stmt.hpp index abd92cd..8a050fe 100644 --- a/src/include/sqlite_stmt.hpp +++ b/src/include/sqlite_stmt.hpp @@ -41,6 +41,7 @@ class SQLiteStatement { throw InternalException("Unsupported type for SQLiteStatement::Bind"); } void BindText(idx_t col, const string_t &value); + void BindBlob(idx_t col, const string_t &value); void BindValue(Vector &col, idx_t c, idx_t r); int GetType(idx_t col); bool IsOpen(); diff --git a/src/sqlite_stmt.cpp b/src/sqlite_stmt.cpp index 40d08cc..474f7fc 100644 --- a/src/sqlite_stmt.cpp +++ b/src/sqlite_stmt.cpp @@ -130,6 +130,10 @@ void SQLiteStatement::Bind(idx_t col, double value) { SQLiteUtils::Check(sqlite3_bind_double(stmt, col + 1, value), db); } +void SQLiteStatement::BindBlob(idx_t col, const string_t &value) { + SQLiteUtils::Check(sqlite3_bind_blob(stmt, col + 1, value.GetDataUnsafe(), value.GetSize(), nullptr), db); +} + void SQLiteStatement::BindText(idx_t col, const string_t &value) { SQLiteUtils::Check(sqlite3_bind_text(stmt, col + 1, value.GetDataUnsafe(), value.GetSize(), nullptr), db); } @@ -152,6 +156,8 @@ void SQLiteStatement::BindValue(Vector &col, idx_t c, idx_t r) { Bind(c, FlatVector::GetData(col)[r]); break; case LogicalTypeId::BLOB: + BindBlob(c, FlatVector::GetData(col)[r]); + break; case LogicalTypeId::VARCHAR: BindText(c, FlatVector::GetData(col)[r]); break;