| CMakeLists.txt |
|
781 |
- |
| firebird.json |
|
28 |
- |
| main.cpp |
|
781 |
- |
| qsql_firebird.cpp |
The driver uses the Firebird 4.0 object-oriented C++ API. Configure-time
detection (FindFirebird.cmake with Firebird_MINIMUM_API_VERSION) already
disables the sql-firebird feature for older clients; this static_assert is a
backstop for out-of-tree builds that bypass configure. |
30931 |
- |
| qsql_firebird_array.cpp |
Run a metadata SELECT with relName/fldName bound as the two text
parameters — identifiers may legally contain quotes or non-ASCII, so
they are never spliced into the SQL text. rowFn(buf, meta) is invoked
for each fetched row until it returns false or the cursor is
exhausted. The statement, metadata and cursor handles are freed by
FbGuard on every path (close on the happy path, release on a throw)
— no manual unwinding needed. |
27429 |
- |
| qsql_firebird_array_p.h |
|
2288 |
- |
| qsql_firebird_driver_p.h |
! \internal
Guards the iAtt lifecycle (published in open(), withdrawn in close())
against cancelQuery(), which reads and uses the attachment from a
foreign thread. All other iAtt access is owner-thread-only.
|
3314 |
- |
| qsql_firebird_helpers.cpp |
! \internal
Convert a Firebird status vector into a QSqlError. `type` is the context in
which the error occurred, supplied by the caller (open() -> ConnectionError,
prepare()/exec() -> StatementError, begin/commit/rollback ->
TransactionError); QSqlError::ErrorType categorises errors by that context,
not by the underlying Firebird cause. The SQLCODE is carried through as the
native error code.
|
18471 |
- |
| qsql_firebird_helpers_p.h |
! \internal
RAII guard for Firebird OO-API handles
The Firebird OO API splits cleanup across two families: reference-counted
interfaces freed with release() (IStatement, IResultSet, IBlob, …) and
IDisposable ones freed with dispose() (IXpbBuilder, IBatchCompletionState).
FbGuard centralises the "free on every error path" bookkeeping so it is not
repeated at every call site.
FbGuard owns one handle and frees it on scope exit with the action supplied
at construction, unless it has been dismissed. closeWith() performs the
type-specific graceful shutdown (IResultSet::close, IStatement::free,
ITransaction::commit, …) which itself consumes the interface reference on
success — so on success the guard is dismissed (no extra free), and only on a
failed close does the destructor release the handle. This mirrors exactly the
"close on the happy path, release on the error path" idiom used throughout.
|
9634 |
- |
| qsql_firebird_p.h |
|
2481 |
- |
| qsql_firebird_result.cpp |
! \internal
Read a BLOB into QByteArray. Uses ThrowStatusWrapper so a read error throws
FbException (caught by QFirebirdResult::data) instead of being swallowed and
returning a silently truncated buffer.
|
55011 |
- |
| qsql_firebird_result_p.h |
! \internal
Transaction-control statement kind (bare COMMIT/ROLLBACK), handled via the
ITransaction API rather than executed as DSQL.
|
9379 |
- |