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
Loading
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -8,8 +8,8 @@ CREATE EXTENSION IF NOT EXISTS ltree;


CREATE TYPE NodeType AS ENUM ('container', 'data', 'link', 'structured');
CREATE TYPE LocationType AS ENUM ('async', 'portal', 'user');
CREATE TYPE StorageType AS ENUM ('cold', 'hot', 'local', 'portal');
CREATE TYPE LocationType AS ENUM ('async', 'user');
CREATE TYPE StorageType AS ENUM ('cold', 'hot', 'local');

CREATE TABLE linked_service (
    service_id        SERIAL     NOT NULL,
@@ -40,10 +40,8 @@ CREATE TABLE location (
CREATE TABLE node (
    node_id                BIGSERIAL     NOT NULL,
    parent_path            LTREE         default NULL,
    parent_relative_path   LTREE         default NULL,
    fs_path                VARCHAR       default NULL,
    name                   VARCHAR       NOT NULL,
    os_name                VARCHAR       default NULL,
    tstamp_wrapper_dir     VARCHAR       default NULL,
    type                   NodeType      NOT NULL,
    location_id            SMALLINT      default NULL,
@@ -81,10 +79,8 @@ CREATE INDEX file_name_idx ON node USING btree(name);
CREATE TABLE deleted_node (
    node_id                BIGSERIAL     NOT NULL,
    parent_path            LTREE         default NULL,
    parent_relative_path   LTREE         default NULL,
    fs_path                VARCHAR       default NULL,
    name                   VARCHAR       NOT NULL,
    os_name                VARCHAR       default NULL,
    tstamp_wrapper_dir     VARCHAR       default NULL,
    type                   NodeType      NOT NULL,
    location_id            SMALLINT      default NULL,
+1 −4
Original line number Diff line number Diff line
@@ -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 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 fk_parent_path FOREIGN KEY (parent_path) REFERENCES node(path);

-- 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);
+1 −26
Original line number Diff line number Diff line
@@ -4,21 +4,6 @@
 * 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)

CREATE VIEW node_vos_path AS
@@ -32,13 +17,3 @@ WITH RECURSIVE r_vos_path AS (
    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;
 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';
+0 −18
Original line number Diff line number Diff line
@@ -52,24 +52,6 @@ SELECT string_agg(name, '/') FROM (
) AS names
$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.
-- This could be performed by business logic of each application that handles jobs but relying directly on the database ensures a better uniformity.