Skip to content
Snippets Groups Projects
Commit b983d3d6 authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

removed references to relative_path, os_name and portal storage and location type

parent ff6ff883
No related branches found
No related tags found
No related merge requests found
Pipeline #8796 passed
...@@ -8,8 +8,8 @@ CREATE EXTENSION IF NOT EXISTS ltree; ...@@ -8,8 +8,8 @@ CREATE EXTENSION IF NOT EXISTS ltree;
CREATE TYPE NodeType AS ENUM ('container', 'data', 'link', 'structured'); CREATE TYPE NodeType AS ENUM ('container', 'data', 'link', 'structured');
CREATE TYPE LocationType AS ENUM ('async', 'portal', 'user'); CREATE TYPE LocationType AS ENUM ('async', 'user');
CREATE TYPE StorageType AS ENUM ('cold', 'hot', 'local', 'portal'); CREATE TYPE StorageType AS ENUM ('cold', 'hot', 'local');
CREATE TABLE linked_service ( CREATE TABLE linked_service (
service_id SERIAL NOT NULL, service_id SERIAL NOT NULL,
...@@ -40,10 +40,8 @@ CREATE TABLE location ( ...@@ -40,10 +40,8 @@ CREATE TABLE location (
CREATE TABLE node ( CREATE TABLE node (
node_id BIGSERIAL NOT NULL, node_id BIGSERIAL NOT NULL,
parent_path LTREE default NULL, parent_path LTREE default NULL,
parent_relative_path LTREE default NULL,
fs_path VARCHAR default NULL, fs_path VARCHAR default NULL,
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
os_name VARCHAR default NULL,
tstamp_wrapper_dir VARCHAR default NULL, tstamp_wrapper_dir VARCHAR default NULL,
type NodeType NOT NULL, type NodeType NOT NULL,
location_id SMALLINT default NULL, location_id SMALLINT default NULL,
...@@ -81,10 +79,8 @@ CREATE INDEX file_name_idx ON node USING btree(name); ...@@ -81,10 +79,8 @@ CREATE INDEX file_name_idx ON node USING btree(name);
CREATE TABLE deleted_node ( CREATE TABLE deleted_node (
node_id BIGSERIAL NOT NULL, node_id BIGSERIAL NOT NULL,
parent_path LTREE default NULL, parent_path LTREE default NULL,
parent_relative_path LTREE default NULL,
fs_path VARCHAR default NULL, fs_path VARCHAR default NULL,
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
os_name VARCHAR default NULL,
tstamp_wrapper_dir VARCHAR default NULL, tstamp_wrapper_dir VARCHAR default NULL,
type NodeType NOT NULL, type NodeType NOT NULL,
location_id SMALLINT default NULL, location_id SMALLINT default NULL,
......
...@@ -33,11 +33,8 @@ ALTER TABLE node ADD COLUMN path ltree GENERATED ALWAYS AS (path(parent_path, no ...@@ -33,11 +33,8 @@ ALTER TABLE node ADD COLUMN path ltree GENERATED ALWAYS AS (path(parent_path, no
CREATE INDEX file_path_gist_idx ON node USING GIST(path); CREATE INDEX file_path_gist_idx ON node USING GIST(path);
CREATE UNIQUE INDEX file_path_idx ON node USING btree(path); CREATE UNIQUE INDEX file_path_idx ON node USING btree(path);
ALTER TABLE node ADD COLUMN relative_path ltree GENERATED ALWAYS AS (path(parent_relative_path, node_id)) STORED;
CREATE INDEX file_rel_path_gist_idx ON node USING GIST(relative_path);
ALTER TABLE node ADD CONSTRAINT unique_path UNIQUE (parent_path, name); ALTER TABLE node ADD CONSTRAINT unique_path UNIQUE (parent_path, name);
ALTER TABLE node ADD CONSTRAINT fk_parent_path FOREIGN KEY (parent_path) REFERENCES node(path); ALTER TABLE node ADD CONSTRAINT fk_parent_path FOREIGN KEY (parent_path) REFERENCES node(path);
-- Create root node -- Create root node
INSERT INTO node (parent_path, parent_relative_path, name, type, creator_id, is_public) VALUES (NULL, NULL, '', 'container', '0', true); INSERT INTO node (parent_path, name, type, creator_id, is_public) VALUES (NULL, '', 'container', '0', true);
...@@ -4,21 +4,6 @@ ...@@ -4,21 +4,6 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
-- View that maps node_id to os_path (relative path of file on disk)
CREATE VIEW node_os_path AS
WITH RECURSIVE r_os_path AS (
SELECT node_id, relative_path, COALESCE(os_name, name) AS os_path
FROM node
WHERE name = ''
UNION ALL
SELECT n.node_id, n.relative_path, p.os_path || '/' || COALESCE(os_name, name)
FROM node n
JOIN r_os_path p ON p.relative_path = n.parent_relative_path
WHERE n.parent_relative_path IS NOT NULL
)
SELECT node_id, (CASE WHEN os_path = '' THEN '/' ELSE os_path END) AS os_path FROM r_os_path;
-- View that maps node_id to vos_path (path in VOSpace) -- View that maps node_id to vos_path (path in VOSpace)
CREATE VIEW node_vos_path AS CREATE VIEW node_vos_path AS
...@@ -32,13 +17,3 @@ WITH RECURSIVE r_vos_path AS ( ...@@ -32,13 +17,3 @@ WITH RECURSIVE r_vos_path AS (
JOIN r_vos_path p ON p.path = n.parent_path JOIN r_vos_path p ON p.path = n.parent_path
) )
SELECT node_id, (CASE WHEN path = '' THEN '/' ELSE vos_path END) AS vos_path FROM r_vos_path; SELECT node_id, (CASE WHEN path = '' THEN '/' ELSE vos_path END) AS vos_path FROM r_vos_path;
\ No newline at end of file
-- View that combines the two previous views to obtain the os_path from the vos_path and vice versa
CREATE VIEW node_path AS
SELECT v.node_id, vos_path, os_path
FROM node_vos_path v
LEFT JOIN node_os_path o ON o.node_id = v.node_id;
-- Example query to obtain the the ltree_path from the os_path:
-- SELECT path FROM node n JOIN node_os_path o ON n.node_id = o.node_id WHERE os_path = '/curban/store';
...@@ -52,24 +52,6 @@ SELECT string_agg(name, '/') FROM ( ...@@ -52,24 +52,6 @@ SELECT string_agg(name, '/') FROM (
) AS names ) AS names
$func$ LANGUAGE sql; $func$ LANGUAGE sql;
-- Returns os_path from node_id
CREATE OR REPLACE FUNCTION get_os_path(input_id BIGINT) RETURNS VARCHAR AS
$func$
SELECT '/' || string_agg(name, '/') FROM (
WITH RECURSIVE paths AS (
SELECT node_id, COALESCE(os_name, name) AS name, relative_path, parent_relative_path, 1 AS level
FROM node
WHERE node_id = input_id
UNION ALL
SELECT f.node_id, COALESCE(f.os_name, f.name) AS name, f.relative_path, f.parent_relative_path, p.level + 1
FROM node f
INNER JOIN paths p ON p.parent_relative_path = f.relative_path
WHERE f.parent_relative_path IS NOT NULL
) SELECT name FROM paths ORDER BY LEVEL DESC
) AS names
$func$ LANGUAGE sql;
-- Trigger function that automatically updates start time and end time of jobs at phase update. -- Trigger function that automatically updates start time and end time of jobs at phase update.
-- This could be performed by business logic of each application that handles jobs but relying directly on the database ensures a better uniformity. -- This could be performed by business logic of each application that handles jobs but relying directly on the database ensures a better uniformity.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment