Closed
Description
Still investigating this, but adding it here now.
Using 1.2.2, I'm hitting an issue where my queries stop working.
Executing Query: SELECT
product_skus.id as sku_id,
product_skus.price_usd as price_usd,
objects.display_name as object_name
FROM product_skus
LEFT JOIN objects on product_skus.root_object = objects.id
WHERE product_skus.id = 49
Executed query SkuTooltipQuery and retrieved 1 records.
...
Executing Query: SELECT
product_skus.id as sku_id,
product_skus.price_usd as price_usd,
objects.display_name as object_name
FROM product_skus
LEFT JOIN objects on product_skus.root_object = objects.id
WHERE product_skus.id = 49
Executed query SkuTooltipQuery and retrieved 0 records.
Executing the same query - the first result is correct, returning a single record. The second query returns zero records. This is happening for all queries. It's almost like each query is deleting records or invalidating the state of the database.
Query:
public struct SkuTooltipQuery : IQuery<SkuTooltipQuery.SQL_TooltipResponse>
{
[Preserve]
public class SQL_TooltipResponse
{
[PrimaryKey, AutoIncrement, Preserve]
public int id { get; set; }
[Preserve]
public string object_name { get; set; }
[Preserve]
public float price_usd { get; set; }
}
private int m_skuId;
public SkuTooltipQuery(int skuId)
{
m_skuId = skuId;
}
public List<SQL_TooltipResponse> Execute(SQLiteConnection database)
{
string query =
$@"SELECT
product_skus.id as sku_id,
product_skus.price_usd as price_usd,
objects.display_name as object_name
FROM product_skus
LEFT JOIN objects on product_skus.root_object = objects.id
WHERE product_skus.id = {m_skuId}";
return database.Query<SQL_TooltipResponse>(query);
}
}
Execution code:
public List<T> ExecuteQuery<T>(IQuery<T> query)
{
var result = query.Execute(m_connection);
if (m_connection.Trace)
{
Debug.Log($"Executed query {query.GetType().Name} and retrieved {result.Count} records.");
}
return result;
}
Database load code:
string url = SQLPathResolver.ResolvePath();
UnityWebRequest request = UnityWebRequest.Get(url);
UnityWebRequest response = await request.SendWebRequest();
var db = new SQLiteConnection("localdb", SQLiteOpenFlags.ReadOnly);
db.Deserialize(response.downloadHandler.data, null, SQLite3.DeserializeFlags.ReadOnly);
m_connection = db;
I load the database once at boot.
Will be testing previous versions (before the Unity WebGL changes) and testing re-loading the database before each query.
Metadata
Metadata
Assignees
Labels
No labels