|
| 1 | +-- This, along with the disabling Spring's autocreation in application.yaml, will |
| 2 | +-- mean that Flyway is used to create the appropriate tables, indices, and triggers |
| 3 | +-- for Spring to properly store session data |
| 4 | + |
| 5 | +-- 1. SPRING_SESSION table |
| 6 | +CREATE TABLE IF NOT EXISTS SPRING_SESSION |
| 7 | +( |
| 8 | + PRIMARY_ID CHAR(36) NOT NULL, |
| 9 | + SESSION_ID CHAR(36) NOT NULL, |
| 10 | + CREATION_TIME BIGINT NOT NULL, |
| 11 | + LAST_ACCESS_TIME BIGINT NOT NULL, |
| 12 | + MAX_INACTIVE_INTERVAL INT NOT NULL, |
| 13 | + EXPIRY_TIME BIGINT NOT NULL, |
| 14 | + PRINCIPAL_NAME VARCHAR(100), |
| 15 | + CONSTRAINT spring_session_pk PRIMARY KEY (PRIMARY_ID) |
| 16 | +); |
| 17 | + |
| 18 | +-- 2. Indexes on SPRING_SESSION |
| 19 | +CREATE UNIQUE INDEX IF NOT EXISTS spring_session_ix1 |
| 20 | + ON SPRING_SESSION (SESSION_ID); |
| 21 | + |
| 22 | +CREATE INDEX IF NOT EXISTS spring_session_ix2 |
| 23 | + ON SPRING_SESSION (EXPIRY_TIME); |
| 24 | + |
| 25 | +CREATE INDEX IF NOT EXISTS spring_session_ix3 |
| 26 | + ON SPRING_SESSION (PRINCIPAL_NAME); |
| 27 | + |
| 28 | +-- 3. SPRING_SESSION_ATTRIBUTES table |
| 29 | +CREATE TABLE IF NOT EXISTS SPRING_SESSION_ATTRIBUTES |
| 30 | +( |
| 31 | + SESSION_PRIMARY_ID CHAR(36) NOT NULL, |
| 32 | + ATTRIBUTE_NAME VARCHAR(200) NOT NULL, |
| 33 | + ATTRIBUTE_BYTES BYTEA NOT NULL, |
| 34 | + CONSTRAINT spring_session_attributes_pk |
| 35 | + PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME) |
| 36 | +); |
| 37 | + |
| 38 | +-- 4. Foreign key (add only if missing) |
| 39 | +DO |
| 40 | +$$ |
| 41 | + BEGIN |
| 42 | + IF NOT EXISTS (SELECT 1 |
| 43 | + FROM information_schema.table_constraints |
| 44 | + WHERE constraint_name = 'spring_session_attributes_fk' |
| 45 | + AND table_name = 'spring_session_attributes') THEN |
| 46 | + ALTER TABLE SPRING_SESSION_ATTRIBUTES |
| 47 | + ADD CONSTRAINT spring_session_attributes_fk |
| 48 | + FOREIGN KEY (SESSION_PRIMARY_ID) |
| 49 | + REFERENCES SPRING_SESSION (PRIMARY_ID) |
| 50 | + ON DELETE CASCADE; |
| 51 | + END IF; |
| 52 | + END |
| 53 | +$$; |
0 commit comments