executeQueryParamBuffer method
Future<Uint8List?>
executeQueryParamBuffer(
- int connectionId,
- String sql,
- Uint8List? paramBuffer, {
- int? maxBufferBytes,
- int? initialBufferBytes,
- Duration? timeout,
- ResultEncoding resultEncoding = ResultEncoding.rowMajor,
- int fetchSize = 0,
inherited
Executes a parameterised query with a pre-serialised buffer (legacy v0 or DRT1 directed parameters).
Implementation
Future<Uint8List?> executeQueryParamBuffer(
int connectionId,
String sql,
Uint8List? paramBuffer, {
int? maxBufferBytes,
int? initialBufferBytes,
Duration? timeout,
ResultEncoding resultEncoding = ResultEncoding.rowMajor,
int fetchSize = 0,
}) async {
if (NativeCallContext.current == null) {
return NativeCallContext.capture(
() => executeQueryParamBuffer(
connectionId,
sql,
paramBuffer,
maxBufferBytes: maxBufferBytes,
initialBufferBytes: initialBufferBytes,
timeout: timeout,
resultEncoding: resultEncoding,
fetchSize: fetchSize,
),
);
}
final bytes =
paramBuffer == null || paramBuffer.isEmpty ? Uint8List(0) : paramBuffer;
final asyncRequestId = await executeAsyncStartParams(
connectionId,
sql,
bytes,
resultEncoding: resultEncoding,
fetchSize: fetchSize,
);
if (asyncRequestId > 0) {
return _waitForAsyncResult(
asyncRequestId,
maxBufferBytes: maxBufferBytes,
initialBufferBytes: initialBufferBytes,
timeout: timeout,
);
}
final startFailure = NativeCallContext.takeFailure();
if (startFailure?.code != OdbcErrorCode.unsupported) {
if (startFailure != null) NativeCallContext.record(startFailure);
return null;
}
_recordFallbackToBlocking(connectionId);
return _executeQueryParamsBlocking(
connectionId,
sql,
bytes,
maxBufferBytes: maxBufferBytes,
initialBufferBytes: initialBufferBytes,
resultEncoding: resultEncoding,
fetchSize: fetchSize,
);
}