2828from sqlalchemy .sql .expression import or_ , and_ , not_ , func , \
2929 asc , desc , union_all , select , bindparam , literal_column , case , cast
3030from sqlalchemy .orm import contains_eager
31+ from sqlalchemy .types import ARRAY , String
3132
3233import codechecker_api_shared
3334from codechecker_api .codeCheckerDBAccess_v6 import constants , ttypes
@@ -1162,8 +1163,7 @@ def get_analysis_statistics_query(session, run_ids, run_history_ids=None):
11621163 .outerjoin (
11631164 RunHistory ,
11641165 RunHistory .id == AnalyzerStatistic .run_history_id ) \
1165- .group_by (RunHistory .run_id ) \
1166- .subquery ()
1166+ .group_by (RunHistory .run_id )
11671167
11681168 query = query .filter (
11691169 AnalyzerStatistic .run_history_id .in_ (history_ids_subq ))
@@ -1833,8 +1833,9 @@ def getDiffResultsHash(self, run_ids, report_hashes, diff_type,
18331833 base_hashes , run_ids , tag_ids )
18341834
18351835 if self ._product .driver_name == 'postgresql' :
1836- new_hashes = select ([func .unnest (report_hashes )
1837- .label ('bug_id' )]) \
1836+ new_hashes = select ([
1837+ func .unnest (cast (report_hashes , ARRAY (String )))
1838+ .label ('bug_id' )]) \
18381839 .except_ (base_hashes ).alias ('new_bugs' )
18391840 return [res [0 ] for res in session .query (new_hashes )]
18401841 else :
@@ -1850,8 +1851,10 @@ def getDiffResultsHash(self, run_ids, report_hashes, diff_type,
18501851 select ([bindparam ('bug_id' + str (i ), h )
18511852 .label ('bug_id' )])
18521853 for i , h in enumerate (chunk )])
1853- q = select ([new_hashes_query ]).except_ (base_hashes )
1854- new_hashes .extend ([res [0 ] for res in session .query (q )])
1854+ q = select ([new_hashes_query .subquery ()]) \
1855+ .except_ (base_hashes )
1856+ new_hashes .extend ([
1857+ res [0 ] for res in session .query (q .subquery ())])
18551858
18561859 return new_hashes
18571860 elif diff_type == DiffType .RESOLVED :
0 commit comments