Mercurial > libervia-pubsub
comparison sat_pubsub/pgsql_storage.py @ 456:b52ebc45b8e3
psql: fix RSM requests handling:
the sub-query to get row number to filter on for `before` and `after` was missing some
filters and thus incorrect. This has been fixed by re-using `_appendSourcesAndFilters`.
rel: 399
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 30 Sep 2021 16:55:05 +0200 |
parents | 7f1394bb96db |
children | 7c9792f934a2 |
comparison
equal
deleted
inserted
replaced
455:0b5233981671 | 456:b52ebc45b8e3 |
---|---|
1180 if rsm.before != '': | 1180 if rsm.before != '': |
1181 query.insert(0,"SELECT * from (") | 1181 query.insert(0,"SELECT * from (") |
1182 query[1] += f",row_number() OVER ({query_order}) as row_number" | 1182 query[1] += f",row_number() OVER ({query_order}) as row_number" |
1183 query.append(f"{query_order}) as x") | 1183 query.append(f"{query_order}) as x") |
1184 query.append( | 1184 query.append( |
1185 f"WHERE row_number<(SELECT row_number FROM (SELECT row_number() OVER ({query_order}) as row_number,item FROM items WHERE node_id=%s) as row_num_sub WHERE item=%s)" | 1185 "WHERE row_number<(SELECT row_number FROM (SELECT row_number() " |
1186 f"OVER ({query_order}) as row_number,item" | |
1186 ) | 1187 ) |
1187 args.extend((self.nodeDbId, rsm.before)) | 1188 self._appendSourcesAndFilters( |
1189 query, args, authorized_groups, unrestricted, ext_data | |
1190 ) | |
1191 query.append(") as row_num_sub WHERE item=%s)") | |
1192 args.append(rsm.before) | |
1188 # we need to reverse order in a first query to get the right | 1193 # we need to reverse order in a first query to get the right |
1189 # items | 1194 # items |
1190 query.insert(0,"SELECT * from (") | 1195 query.insert(0,"SELECT * from (") |
1191 query.append(self.getOrderBy(ext_data, direction='DESC')) | 1196 query.append(self.getOrderBy(ext_data, direction='DESC')) |
1192 query.append("LIMIT %s) as x") | 1197 query.append("LIMIT %s) as x") |
1202 elif rsm.after: | 1207 elif rsm.after: |
1203 query.insert(0,"SELECT * from (") | 1208 query.insert(0,"SELECT * from (") |
1204 query[1] += f",row_number() OVER ({query_order}) as row_number" | 1209 query[1] += f",row_number() OVER ({query_order}) as row_number" |
1205 query.append(f"{query_order}) as x") | 1210 query.append(f"{query_order}) as x") |
1206 query.append( | 1211 query.append( |
1207 f"WHERE row_number>(SELECT row_number FROM (SELECT row_number() OVER ({query_order}) as row_number,item FROM items WHERE node_id=%s) as row_num_sub WHERE item=%s)" | 1212 "WHERE row_number>(SELECT row_number FROM (SELECT row_number() " |
1213 f"OVER ({query_order}) as row_number,item" | |
1208 ) | 1214 ) |
1209 args.extend((self.nodeDbId, rsm.after)) | 1215 self._appendSourcesAndFilters( |
1216 query, args, authorized_groups, unrestricted, ext_data | |
1217 ) | |
1218 query.append(") as row_num_sub WHERE item=%s)") | |
1219 args.append(rsm.after) | |
1210 else: | 1220 else: |
1211 rsm = False | 1221 rsm = False |
1212 | 1222 |
1213 query.append(query_order) | 1223 query.append(query_order) |
1214 | 1224 |