diff --git a/lib/modules/Sql.pmod/rsql.pike b/lib/modules/Sql.pmod/rsql.pike
index f2c1b9b7989fa74e15eabeaed5f1d848f3ce10cd..a594e5523283d15b35f7009c061ec0ab4477ca10 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 55d55a3ae934c74f277bcffe0ac8461d722be6f5..de802d00928d9f0477dcf4eabfcb57c22793dc79 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,