author | Tero Marttila <terom@fixme.fi> |
Tue, 21 Oct 2008 21:54:20 +0300 | |
changeset 37 | c3880f3b4de8 |
parent 35 | 4f10421681d2 |
child 38 | 1fd4da071575 |
permissions | -rw-r--r-- |
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
1 |
|
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
2 |
DROP TABLE IF EXISTS file_tree; |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
3 |
DROP TABLE IF EXISTS inodes; |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
4 |
DROP SEQUENCE IF EXISTS ino_seq; |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
5 |
|
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
6 |
CREATE SEQUENCE ino_seq START 64; |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
7 |
|
31 | 8 |
CREATE TABLE inodes ( |
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
9 |
ino int4 primary key DEFAULT nextval('ino_seq'::regclass), |
31 | 10 |
type char(3) NOT NULL, |
11 |
mode int2 NOT NULL, |
|
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
12 |
data oid, |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
13 |
link_path varchar(512) |
31 | 14 |
); |
24 | 15 |
|
31 | 16 |
CREATE TABLE file_tree ( |
17 |
"offset" serial4 primary key, |
|
18 |
name varchar(256), |
|
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
19 |
ino int4 references inodes(ino) NOT NULL UNIQUE, |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
20 |
parent int4 references file_tree(ino) |
31 | 21 |
); |
24 | 22 |
|
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
23 |
INSERT INTO inodes (ino, type, mode, data) VALUES |
31 | 24 |
(1, 'DIR', 365, NULL), |
25 |
(2, 'REG', 292, lo_create(0)); |
|
27 | 26 |
|
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
27 |
INSERT INTO file_tree (name, parent, ino) VALUES |
31 | 28 |
(NULL, NULL, 1 ), |
29 |
('foo', 1, 2 ); |
|
30 |
||
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
31 |
CREATE OR REPLACE FUNCTION lo_size (oid) RETURNS int4 LANGUAGE SQL STABLE RETURNS NULL ON NULL INPUT AS 'select lo_lseek(lo_open($1, 262144), 0, 2);'; |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
32 |
CREATE OR REPLACE FUNCTION lo_pread (IN fd int4, IN len int4, IN "off" int4) RETURNS bytea LANGUAGE SQL STRICT AS 'select lo_lseek($1, $3, 0); select loread($1, $2);'; |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
33 |
CREATE OR REPLACE FUNCTION lo_pwrite (IN fd int4, IN buf bytea, IN "off" int4) RETURNS int4 LANGUAGE SQL STRICT AS 'select lo_lseek($1, $3, 0); select lowrite($1, $2);'; |
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
34 |
CREATE OR REPLACE FUNCTION lo_otruncate (IN oid, IN len int4) RETURNS oid LANGUAGE SQL STRICT AS 'select lo_truncate(lo_open($1, 393216), $2); select $1;'; |
33 | 35 |
|
37
c3880f3b4de8
update fuse_db.sql, just use dbfs_unlink for rmdir (no special handling)
Tero Marttila <terom@fixme.fi>
parents:
35
diff
changeset
|
36 |
CREATE OR REPLACE FUNCTION dbfs_size (type char, oid, link varchar) RETURNS int4 LANGUAGE SQL STABLE AS $$ |
33 | 37 |
SELECT CASE $1 |
38 |
WHEN 'LNK' THEN char_length($3) |
|
39 |
WHEN 'REG' THEN lo_size($2) |
|
40 |
ELSE 0 |
|
41 |
END; |
|
42 |
$$; |