Automatically fetch any additional result sets from a query.

Move the iterator to an internal seq.
This commit is contained in:
Mahlon E. Smith 2025-07-18 15:20:49 -07:00
parent b61e125a80
commit 6881d15358
Signed by: mahlon
SSH key fingerprint: SHA256:dP84sRGKZRpOOiPD/+GuOq+SHSxEw9qi5BWLQobaHm0
3 changed files with 43 additions and 49 deletions

View file

@ -1,7 +1,7 @@
# vim: set et sta sw=4 ts=4 :
discard """
output: "Jenny|Lenny\nLenny\nJenny\n"
output: "a\nb\nc\nd\ne\nf\n"
"""
import kuzu
@ -9,34 +9,26 @@ import kuzu
let db = newKuzuDatabase()
let conn = db.connect
var q = conn.query """
CREATE NODE TABLE User(
id SERIAL PRIMARY KEY,
name STRING
);
CREATE REL TABLE FOLLOWS(
From User To User
);
MERGE (a:User {name: "Lenny"})-[f:Follows]->(b:User {name: "Jenny"});
"""
q = conn.query( "MATCH (u:User) RETURN *" )
var q = conn.query( "RETURN 'hi'" )
assert typeOf( q ) is KuzuQueryResult
assert q.hasNextSet == false
assert q.sets.len == 0
q = conn.query """
MATCH (a:User)<-[f:Follows]-(b:User) RETURN a.name, b.name;
MATCH (u:User) RETURN u.name;
RETURN "a";
RETURN "b";
RETURN "c";
RETURN "d";
RETURN "e";
RETURN "f";
"""
assert typeOf( q ) is KuzuQueryResult
assert q.hasNextSet == true
assert q.sets.len == 5
echo q.getNext
for query_result in q.sets:
for row in query_result.items:
for set in q.sets:
for row in set.items:
echo row