pool delete-facts signals throws sqlalchemy error
Hi there,
I get the following error:
foerstch@eaw-sdwh3:~$ sudo pool delete-facts signals "source==bf_f12_47a_zurcherstr" "timestamp>=2022-01-01 00:00:00"
> this is datapool version 2.0.0
> delete-facts
/usr/local/lib/python3.9/site-packages/poolkit/utils.py:184: SAWarning: implicitly coercing SELECT object to scalar subquery; please use the .scalar_subquery() method to produce a scalar subquery.
total_rows = engine.execute(func.count(select([1], None, alias(query)))).scalar()
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.CardinalityViolation: more than one row returned by a subquery used as an expression
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/poolkit/main.py", line 97, in inner
return function(*a, **kw)
File "/usr/local/lib/python3.9/site-packages/poolkit/main.py", line 536, in _delete_facts
delete_facts(do_delete, max_rows, fact_table, filters, print_ok, print_err)
File "/usr/local/lib/python3.9/site-packages/poolkit/commands/delete_facts.py", line 19, in delete_facts
return _delete_facts(
File "/usr/local/lib/python3.9/site-packages/poolkit/commands/delete_facts.py", line 61, in _delete_facts
found_errors, messages, _ = filter_results(
File "/usr/local/lib/python3.9/site-packages/poolkit/utils.py", line 603, in filter_results
for item in iterator:
File "/usr/local/lib/python3.9/site-packages/datapool/signal.py", line 401, in summary
print_query(engine, stmt, header, indent, print_, max_rows)
File "/usr/local/lib/python3.9/site-packages/poolkit/utils.py", line 184, in print_query
total_rows = engine.execute(func.count(select([1], None, alias(query)))).scalar()
File "<string>", line 2, in execute
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/deprecations.py", line 390, in warned
return fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3108, in execute
return connection.execute(statement, *multiparams, **params)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1262, in execute
return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/functions.py", line 131, in _execute_on_connection
return connection._execute_function(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1267, in _execute_function
return self._execute_clauseelement(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1451, in _execute_clauseelement
ret = self._execute_context(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1813, in _execute_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1994, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.CardinalityViolation) more than one row returned by a subquery used as an expression
[SQL: SELECT count((SELECT 1
FROM (SELECT signal.signal_id AS signal_id, signal.timestamp AS timestamp, signal.value AS value, parameter.name AS parameter, source.name AS source, site.name AS site, signal.coord_x AS x, signal.coord_y AS y, signal.coord_z AS z
FROM signal JOIN parameter ON signal.parameter_id = parameter.parameter_id LEFT OUTER JOIN site ON signal.site_id = site.site_id JOIN source ON signal.source_id = source.source_id
WHERE signal.source_id = %(source_id_1)s AND signal.timestamp >= %(timestamp_1)s) AS anon_1)) AS count_1]
[parameters: {'source_id_1': 169, 'timestamp_1': datetime.datetime(2022, 1, 1, 0, 0)}]
(Background on this error at: http://sqlalche.me/e/14/f405)
set environment variable PDB to start debugger automatically.
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.CardinalityViolation: more than one row returned by a subquery used as an expression
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/bin/pool", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1062, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/poolkit/main.py", line 74, in inner
return function(*a, **kw)
File "/usr/local/lib/python3.9/site-packages/poolkit/main.py", line 112, in inner
raise e
File "/usr/local/lib/python3.9/site-packages/poolkit/main.py", line 97, in inner
return function(*a, **kw)
File "/usr/local/lib/python3.9/site-packages/poolkit/main.py", line 536, in _delete_facts
delete_facts(do_delete, max_rows, fact_table, filters, print_ok, print_err)
File "/usr/local/lib/python3.9/site-packages/poolkit/commands/delete_facts.py", line 19, in delete_facts
return _delete_facts(
File "/usr/local/lib/python3.9/site-packages/poolkit/commands/delete_facts.py", line 61, in _delete_facts
found_errors, messages, _ = filter_results(
File "/usr/local/lib/python3.9/site-packages/poolkit/utils.py", line 603, in filter_results
for item in iterator:
File "/usr/local/lib/python3.9/site-packages/datapool/signal.py", line 401, in summary
print_query(engine, stmt, header, indent, print_, max_rows)
File "/usr/local/lib/python3.9/site-packages/poolkit/utils.py", line 184, in print_query
total_rows = engine.execute(func.count(select([1], None, alias(query)))).scalar()
File "<string>", line 2, in execute
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/deprecations.py", line 390, in warned
return fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3108, in execute
return connection.execute(statement, *multiparams, **params)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1262, in execute
return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/functions.py", line 131, in _execute_on_connection
return connection._execute_function(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1267, in _execute_function
return self._execute_clauseelement(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1451, in _execute_clauseelement
ret = self._execute_context(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1813, in _execute_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1994, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.CardinalityViolation) more than one row returned by a subquery used as an expression
[SQL: SELECT count((SELECT 1
FROM (SELECT signal.signal_id AS signal_id, signal.timestamp AS timestamp, signal.value AS value, parameter.name AS parameter, source.name AS source, site.name AS site, signal.coord_x AS x, signal.coord_y AS y, signal.coord_z AS z
FROM signal JOIN parameter ON signal.parameter_id = parameter.parameter_id LEFT OUTER JOIN site ON signal.site_id = site.site_id JOIN source ON signal.source_id = source.source_id
WHERE signal.source_id = %(source_id_1)s AND signal.timestamp >= %(timestamp_1)s) AS anon_1)) AS count_1]
[parameters: {'source_id_1': 169, 'timestamp_1': datetime.datetime(2022, 1, 1, 0, 0)}]
(Background on this error at: http://sqlalche.me/e/14/f405)