query method
Executes a single query.
Implementation
@override
Future<List<List>> query(
String query, Map<String, dynamic> substitutionValues,
[List<String?>? returningFields]) async {
if (returningFields?.isNotEmpty == true) {
//if (returningFields != null) {
var fields = returningFields!.join(', ');
var returning = 'RETURNING $fields';
query = '$query $returning';
}
logger?.fine('Query: $query');
logger?.fine('Values: $substitutionValues');
List<List> results;
try {
results = await connection!.query(query,
substitutionValues: substitutionValues,
timeoutInSeconds: connectionInfo!.timeoutInSeconds);
} catch (e) {
//reconnect in Error
//PostgreSQLSeverity.error : Attempting to execute query, but connection is not open.
if (connectionInfo?.reconnectIfConnectionIsNotOpen == true &&
'$e'.contains('connection is not open') ||
'$e'.contains('database connection closing')) {
await reconnect();
results = await connection!
.query(query, substitutionValues: substitutionValues);
} else {
rethrow;
}
}
return results;
}