/usr/lib/pike8.0/modules/Sql.pmod/sqlite.pike is in pike8.0-sqlite 8.0.498-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #pike __REAL_VERSION__
#require constant(SQLite.SQLite)
// Cannot dump this since the #require check may depend on the
// presence of system libs at runtime.
constant dont_dump_program = 1;
inherit SQLite.SQLite;
void create(string a, void|string b, void|mixed c, void|mixed d,
void|mapping options) {
if(b) a += "/"+b;
::create(a);
}
array list_fields(string n, string|void wild)
{
string qry = "";
qry = "PRAGMA table_info(" + n + ")";
array r = query(qry);
if (!r || !sizeof(r)) {
predef::error("Unknown table: %s\n", n);
}
// now, we weed out the ones that don't match wild, if provided
if(wild)
{
r = filter(r, lambda(mapping row)
{ return (search(row->name, wild) !=-1); }
);
}
array fields = ({});
foreach(r;; mapping f)
{
mapping fld = ([]);
fld->name = f->name;
fld->table = n;
string t, l;
if(!sscanf(f->type, "%s(%s)", t, l))
t = f->type;
fld->length = (int)l;
switch(t)
{
case "char":
t = "string";
break;
case "int":
t = "integer";
break;
}
fld->type = t;
fld->flags = (<>);
if((int)f->notnull)
fld->flags->not_null = 1;
if((int)f->pk)
{
// primary key implies not null.
fld->flags->not_null = 1;
fld->flags->primary_key = 1;
}
fld->default = f->dflt_value;
fields += ({fld});
}
return fields;
}
array list_tables(string|void n)
{
string qry = "";
if(n)
qry = "SELECT name FROM SQLITE_MASTER WHERE name like '" + n + "%' and TYPE='table'";
else
qry = "SELECT name FROM SQLITE_MASTER where TYPE='table'";
array r = query(qry);
array out = ({});
foreach(r;;mapping row)
{
if(row->name)
out += ({row->name});
else
out += ({row["sqlite_master.name"] });
}
return out;
}
|