Skip to content

Fix values list subquery

Adam Alton requested to merge fix-values-list-subquery into 30-integrate-firestore

Without the included fix, the test that's added here fails like this:

----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2649, in to_python
    return uuid.UUID(**{input_form: value})
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/uuid.py", line 174, in __init__
    hex = hex.replace('urn:', '').replace('uuid:', '')
AttributeError: 'list' object has no attribute 'replace'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/tests/test_subqueries.py", line 31, in test_sub_query_with_values_list
    self.assertEqual(list(queryset), [points_at_1])
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/query.py", line 394, in __iter__
    self._fetch_all()
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/query.py", line 1866, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/query.py", line 87, in __iter__
    results = compiler.execute_sql(
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1382, in execute_sql
    sql, params = self.as_sql()
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/datastore/compiler.py", line 39, in as_sql
    select = SelectCommand(self.connection, self.query)
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/datastore/commands.py", line 258, in __init__
    self.query = transform_query(connection, query)
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/common/query.py", line 670, in transform_query
    return _get_parser(query, connection).get_transformed_query()
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/common/parsers/base.py", line 388, in get_transformed_query
    output = self._generate_where_node(ret)
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/common/parsers/base.py", line 317, in _generate_where_node
    _walk_django_where(
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/common/parsers/base.py", line 69, in _walk_django_where
    walk_node(query.where, **kwargs)
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/common/parsers/base.py", line 59, in walk_node
    leaf_callback(child, **new_kwargs)
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/gcloudc/db/backends/common/parsers/base.py", line 287, in _where_node_leaf_callback
    rhs = node.get_db_prep_lookup(rhs, connection)[-1]
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/lookups.py", line 252, in get_db_prep_lookup
    [get_db_prep_value(v, connection, prepared=True) for v in value]
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/lookups.py", line 252, in <listcomp>
    [get_db_prep_value(v, connection, prepared=True) for v in value]
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2639, in get_db_prep_value
    value = self.to_python(value)
  File "/Users/adamalton/Sites/gitlab/django-gcloud-connectors/.venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2651, in to_python
    raise exceptions.ValidationError(
django.core.exceptions.ValidationError: ["“[UUID('e1ee2561-0013-43ff-b5ff-ef3a2b7f3fff')]” is not a valid UUID."]
Edited by Adam Alton

Merge request reports