From 2ca6cdb4bb56cb15fc784258b7669f9be95387c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Wed, 22 May 2013 15:49:24 +0200 Subject: [PATCH] Sql.rsql: Implemented generic proxy of functions. --- lib/modules/Sql.pmod/rsql.pike | 13 +++++++++++++ lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/lib/modules/Sql.pmod/rsql.pike b/lib/modules/Sql.pmod/rsql.pike index f2c1b9b798..a594e55232 100644 --- a/lib/modules/Sql.pmod/rsql.pike +++ b/lib/modules/Sql.pmod/rsql.pike @@ -115,6 +115,11 @@ protected mixed do_request(int cmd, mixed|void arg, int|void noreconnect) } } +protected mixed do_proxy(string cmd, array(mixed) args) +{ + return do_request('P', ({ cmd, args })); +} + void select_db(string the_db) { do_request('D', the_db); @@ -285,6 +290,14 @@ void set_charset(string charset) do_request('H', charset); } +protected function|mixed `->(string cmd) +{ + return ::`->(cmd) || + lambda(mixed ... args) { + return do_proxy(cmd, args); + }; +} + void create(string|void host, string|void db, string|void user, string|void _pw, mapping|void options) { diff --git a/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike b/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike index 55d55a3ae9..de802d0092 100644 --- a/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike +++ b/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike @@ -278,6 +278,11 @@ class Connection get_query(args[0])->seek(args[1]); } + protected mixed cmd_proxy(array(string|mixed) cmd_args) + { + return predef::`->(sqlobj, cmd_args[0])(@cmd_args[1]); + } + protected string cmd_get_charset() { return sqlobj->get_charset(); @@ -311,6 +316,7 @@ class Connection 'H': cmd_set_charset, 'I': cmd_srvinfo, 'N': cmd_numrows, + 'P': cmd_proxy, 'Q': cmd_bigquery, 'R': cmd_fetchrow, 'S': cmd_seek, -- GitLab