Frozen-Burrito / hydrate-app

Repositorio para la app de apoyo de la botella hydrate, desarrollada con Flutter.
2 stars 0 forks source link

[BUG] Error al usar un solo `where`, sin `unions`, en `SQLiteDB.select()` #28

Closed Frozen-Burrito closed 2 years ago

Frozen-Burrito commented 2 years ago

Descripción del Error Cuando el método SQLiteDB.select() es invocado, con un solo elemento como argumento a where y un valor nulo como argumento para unions, el where es completamente ignorado. Esto se debe a la condición (where != null && whereUnions != null), que solo es evaluada a true cuando se incluye al menos un elemento en unions (usualmente, para usar múltiples where).

El problema es encontrado en la línea 168 de SQLiteDB.dart:

final fullWhere = (where != null && whereUnions != null) 
    ? MultiWhereClause.fromConditions(where, whereUnions)
    : null;

Cómo Reproducir Pasos para reproducir el error:

  1. Encontrar un uso de SQLiteDB.select() que use un solo WhereClause en su parámetro where. Este error fue encontrado en el método ProfileProvider.findProfileLinkedToAccount().
  2. Notar como el string "WHERE query: null, ARGS: null" es impreso en la debug console.
  3. Si se analizan los resultados del query, se puede observar que son incorrectos.

Comportamiento Esperado El método SQLiteDB.select() debería realizar el query a SQLite usando los argumentos where proporcionados, para poder realizar queries selectivas.

Entorno

Frozen-Burrito commented 2 years ago

Este error fue arreglado haciendo que fullWhere sea una instancia de MultiWhereClause cuando where es una lista no vacía. También se agregaron assert para verificar que where.length siempre sea 1 unidad mayor que unions.length, si where.isNotEmpty es true.