turn overrides table structure

turn overrides table structure#

The Turn_Overrides table holds information on allowed turn/connection overrides to be used

Overriding the logic that creates the Connections table is done using this table in the following way:

A penalty of -1 means that this turn is prohibited A non-negative penalty means that this turn is allowed

The table is indexed on node

Table Structure#

Field

Type

NULL allowed

Default Value

Foreign key

Description

turn_pen*

INTEGER

NO

ID of the override

link

INTEGER

NO

Link(link)

Movement coming from this link

dir

INTEGER

NO

link direction the movement is coming from

to_link

INTEGER

NO

Link(to_link)

Movement going to this link

to_dir

INTEGER

NO

link direction the movement is going to

node

INTEGER

NO

Node(node)

Node where the turn is happening

penalty

INTEGER

NO

-1

Penalty for the turn. -1 means the turn is blocked

notes

TEXT

YES

User notes, generally why this override was instituted

(* - Primary key)

The SQL statement for table and index creation is below.

CREATE TABLE IF NOT EXISTS "Turn_Overrides" (
    "turn_pen"  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "link"      INTEGER NOT NULL,
    "dir"       INTEGER NOT NULL,
    "to_link"   INTEGER NOT NULL,
    "to_dir"    INTEGER NOT NULL,
    "node"      INTEGER NOT NULL,
    "penalty"   INTEGER NOT NULL DEFAULT -1,
    "notes"     TEXT,

    CONSTRAINT "link_fk" FOREIGN KEY("link") REFERENCES "Link"("link") DEFERRABLE INITIALLY DEFERRED, -- check
    CONSTRAINT "to_link_fk" FOREIGN KEY("to_link") REFERENCES "Link"("link") DEFERRABLE INITIALLY DEFERRED, -- check
    CONSTRAINT "to_node_fk" FOREIGN KEY("node") REFERENCES "Node"("node") DEFERRABLE INITIALLY DEFERRED
);

create INDEX IF NOT EXISTS turns_nod_idx ON Turn_Overrides (node);
CREATE UNIQUE INDEX IF NOT EXISTS turns_link_pair_idx ON Turn_Overrides (link, to_link, node);