Compiled Cypher: a sort key beside a variable-length walk is written at every level, compiling to megabytes
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 58/100
Rechercherichtung
Start in drivine/cypher/sql/sql_cypher_compiler.py at _project's sort-term handling around line 2697, then compare it with _shared_first and the drivine4j#378 fix. Port the corresponding compiled-size test from CompiledSizeTest, plus any cross-engine assertion added upstream. Done means the example no longer expands to megabytes of SQL and the ported tests pass.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Port of liberation-data/drivine4j#378.
An ORDER BY term that isn't an aggregate, and isn't one of the items, is written out again at every level when it sits beside a variable-length walk. A modest sort key then compiles to megabytes of SQL.
MATCH (a:CyAgg)-[:NEXT*1..2]->(b:CyAgg)
RETURN a.id AS a, b.id AS bb
ORDER BY (datetime(b.at) + duration({minutes: b.m})).minute, a, bb
Compiled size on main (0a3a8be), and on the port of drivine4j#359 for #193, which doesn't change this path:
| Store | This statement | With the sort key worked out in a WITH first |
|---|---|---|
| Postgres | 2,416,481 characters | 13,547 |
| Oracle | 5,617,352 characters | 13,654 |
These are the same sizes drivine4j reports.
Where: drivine/cypher/sql/sql_cypher_compiler.py:2697, in _project's sort terms. Beside a walk (select.walks), the order term is compiled through self._unshared(carry), so nothing in it is bound once. This is the same shape as drivine4j#333, which #193 ports through _shared_first. Statements this size failed in drivine4j#333 with ORA-03113 on Oracle. This one hasn't been run against a store yet.
Fix: port the fix for drivine4j#378 once it lands. The likely fix is to work a non-trivial order term out first, in its own WITH *, beside a walk, as _shared_first does for an aggregate's argument.
Tests to port: drivine4j's size case for drivine4j#378 in CompiledSizeTest, and its cross-engine assertion if it adds one.
- Vorherrschende Sprache
- Python
- Sterne
- 1
- Forks
- 0
- Ø Merge
- 1 Std. 29 Min.
- Gemergte PRs (30 T.)
- 136
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus liberation-data/drivine-python
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
liberation-data/drivine-python#250 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
liberation-data/drivine-python#209 ·
Maintainer antworten meist innerhalb von 1 Tag
-
CI: three Oracle-only tests in test_cypher_compiled.py never run, as -k oracle doesn't select themOffen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
liberation-data/drivine-python#178 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
liberation-data/drivine-python#297 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
liberation-data/drivine-python#295 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in liberation-data/drivine-python
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
BCDA-APS/polar-bits#93 ·
-
infer_audio_type only recognises one MPEG Layer III frame header, so most MP3 files are rejectedEvtl. vergeben @Steve-20-ai hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
[BUG] - ssh_config `Match tagged` statement always appliesEvtl. vergeben @AtharvRG hat das heute übernommen. OffenBug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
paramiko/paramiko#2715 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 9 Tagen
-
auto-rejected intake mcp-intake needs-salvage priority:high type:feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Ikalus1988/MisakaNet#4221 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag