Skip to content
Snippets Groups Projects
Commit 2d602246 authored by Henrik (Grubba) Grubbström's avatar Henrik (Grubba) Grubbström
Browse files

Sql.rsql: Implemented support for all big_query() variants.

This implements support for big_typed_query(), streaming_query()
and streaming_typed_query().
parent 04ce8b58
No related branches found
No related tags found
No related merge requests found
...@@ -187,17 +187,9 @@ string quote(string s) ...@@ -187,17 +187,9 @@ string quote(string s)
return do_request('q'); return do_request('q');
} }
int|object big_query(object|string q, mapping(string|int:mixed)|void bindings) protected class RemoteResult(protected function(int,mixed:mixed) do_request,
protected mixed qid)
{ {
if(bindings)
q=.sql_util.emulate_bindings(q,bindings,this);
mixed qid = do_request('Q', q);
return qid && class {
protected function(int,mixed:mixed) do_request;
protected mixed qid;
void destroy() void destroy()
{ {
do_request('Z', qid); do_request('Z', qid);
...@@ -232,14 +224,45 @@ int|object big_query(object|string q, mapping(string|int:mixed)|void bindings) ...@@ -232,14 +224,45 @@ int|object big_query(object|string q, mapping(string|int:mixed)|void bindings)
{ {
do_request('S', ({qid,skip})); do_request('S', ({qid,skip}));
} }
}
void create(function(int,mixed:mixed) d_r, mixed i) int|object big_query(object|string q, mapping(string|int:mixed)|void bindings)
{ {
do_request = d_r; if(bindings)
qid = i; q=.sql_util.emulate_bindings(q,bindings,this);
mixed qid = do_request('Q', q);
return qid && RemoteResult(do_request, qid);
} }
}(do_request, qid); int|object big_typed_query(object|string q,
mapping(string|int:mixed)|void bindings)
{
if(bindings)
q=.sql_util.emulate_bindings(q,bindings,this);
mixed qid = do_request('Q', ({ "big_typed_query", q }));
return qid && RemoteResult(do_request, qid);
}
int|object streaming_query(object|string q,
mapping(string|int:mixed)|void bindings)
{
if(bindings)
q=.sql_util.emulate_bindings(q,bindings,this);
mixed qid = do_request('Q', ({ "streaming_query", q }));
return qid && RemoteResult(do_request, qid);
}
int|object streaming_typed_query(object|string q,
mapping(string|int:mixed)|void bindings)
{
if(bindings)
q=.sql_util.emulate_bindings(q,bindings,this);
mixed qid = do_request('Q', ({ "streaming_typed_query", q }));
return qid && RemoteResult(do_request, qid);
} }
array(mapping(string:mixed)) query(mixed ... args) array(mapping(string:mixed)) query(mixed ... args)
......
...@@ -212,9 +212,14 @@ class Connection ...@@ -212,9 +212,14 @@ class Connection
return sprintf("%4c%4c", qbase, qid++); return sprintf("%4c%4c", qbase, qid++);
} }
protected string cmd_bigquery(string q) protected string cmd_bigquery(string|array(string) q)
{ {
object res = sqlobj->big_query(q); object res;
if (arrayp(q)) {
res = predef::`->(sqlobj, q[0])(@q[1..]);
} else {
res = sqlobj->big_query(q);
}
if(!res) if(!res)
return 0; return 0;
string qid = make_id(); string qid = make_id();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment