|
|
|
|
|
|
|
|
|
#pike __VERSION__ |
|
#if constant(sybase.sybase) |
|
inherit sybase.sybase:mo; |
#define THROW(X) throw(({X+"\n",backtrace()})) |
|
|
|
|
|
void select_db(string db) |
{ |
mo::big_query("use "+db); |
} |
|
|
|
|
void create_db (string dbname) { |
mo::big_query("create database "+dbname); |
} |
|
|
|
|
void drop_db (string dbname) { |
mo::big_query("drop database "+dbname); |
} |
|
void shutdown() { |
catch { |
mo::big_query("shutdown"); |
}; |
} |
|
string server_info () { |
return "sybase/10.X or 11.X"; |
} |
|
|
|
|
|
string host_info() { |
return "unknown"; |
} |
|
|
|
|
array(string) list_dbs(string|void wild) { |
THROW("Unsupported"); |
} |
|
|
|
|
|
array(string) list_tables(string|void wild) { |
THROW("Unsupported"); |
} |
|
|
|
|
array(string) list_fields(string|void wild) { |
THROW("Unsupported"); |
} |
|
int num_rows() { |
THROW("Unsupported by the DB server"); |
} |
|
void seek(int skipthismany) { |
if (skipthismany<0) |
THROW("Negative skips are not supported"); |
if (!skipthismany) |
return; |
while (skipthismany && fetch_row()){ |
skipthismany--; |
} |
} |
|
void create(void|string host, void|string db, void|string user, |
void|string pass) { |
mo::create(host||"",db||"",user||"",pass||""); |
if (db && stringp(db) && sizeof(db)) { |
mo::big_query("use "+db); |
} |
} |
|
int|object big_query(string q, mapping(string|int:mixed)|void bindings) { |
if (!bindings) |
return ::big_query(q); |
return ::big_query(.sql_util.emulate_bindings(q,bindings,this_object())); |
} |
|
#else |
#error "Sybase driver not available.\n" |
#endif |
|
|