8 private string db_connect;
12 oHandle->big_query("select ob_class from ob_class "+
17 void create(string connect) {
19 oHandle = Sql.Sql(db_connect);
22 int|object big_query(object|string q, mixed ... extraargs) {
26 if ( arrayp(extraargs) && sizeof(extraargs)>0)
27 query = sprintf(q, @extraargs);
29 mixed err = catch { res=oHandle->big_query(query); };
32 FATAL("Database Error ("+(string)oHandle->error()+")\n"+
33 master()->describe_backtrace(err));
40 return oHandle->list_tables() || ({ });
43 array(mapping(string:mixed)) query(object|string q, mixed ... extraargs) {
44 array(mapping(string:mixed)) res;
46 if ( arrayp(extraargs) && sizeof(extraargs)>0)
47 query = sprintf(q, @extraargs);
49 mixed err = catch ( res=oHandle->query(query) );
51 FATAL(" SQL Problem: SQL=" + query + "\n"+
52 " Database Error("+(string)oHandle->error()+")");
54 oHandle = Sql.Sql(db_connect);
55 res = oHandle->query(q, @extraargs);
60 mapping get_indices(string tname) {
62 mixed res = oHandle->query("show index from ob_data");
63 werror("get_indices() = %O\n", res);
68 void check_tables() { }
70 void create_tables() { }
72 string create_insert_statement(array sStatements)
74 string s = sStatements * ",";
75 return "insert into ob_data values " + s;
78 void create_table(string name, array types)
80 string query = "create table " + name + " (";
81 for ( int i = 0; i < sizeof(types) - 1; i++ ) {
82 mapping type = types[i];
83 query += type->name + " " + type->type + ",";
85 query += types[sizeof(types)-1]->name + " " + types[sizeof(types)-1]->type;
88 foreach( types, mapping type ) {
90 unique += ({ type->name });
92 if ( sizeof(unique) > 0 ) {
93 query += ", UNIQUE(" + (unique*",")+")";
98 string escape_blob(string data) {
99 return oHandle->quote(data);
102 string unescape_blob(string data) {
106 string quote_index(string index) {
107 if ( !stringp(index) )
109 return oHandle->quote(index);
112 int enable_decorations() { return 0; }
113 int get_object_class() { return 0; }
114 object get_object() { return _Database; }
116 string get_database() { return "mysql"; }
118 mapping check_updates(object dbupdates, function func) { return ([ ]); }
120 function `->(string fname) {
122 case "query": return query;
123 case "big_query" : return big_query;
124 case "keep": return keep;
125 case "list_tables": return list_tables;
126 case "create_tables": return create_tables;
127 case "check_tables": return check_tables;
128 case "create_insert_statement": return create_insert_statement;
129 case "create_table": return create_table;
130 case "check_updates": return check_updates;
131 case "unescape_blob": return unescape_blob;
132 case "escape_blob": return escape_blob;
133 case "get_database": return get_database;
134 case "quote_index": return quote_index;
135 case "get_object_class": return get_object_class;
136 case "get_object": return get_object;
137 case "enable_decorations": return enable_decorations;
138 case "this": return this;
139 case "describe": return describe;
141 if ( !objectp(oHandle) ) {
144 return oHandle[fname];
148 string describe() { return "SqlHandle()"; }