0002-sql-create-trigger-on-wcs_meta-only-when-needed-6346.patch
wcs/sql.py | ||
---|---|---|
1497 | 1497 |
created_at timestamptz DEFAULT NOW(), |
1498 | 1498 |
updated_at timestamptz DEFAULT NOW())''' |
1499 | 1499 |
) |
1500 |
cur.execute( |
|
1501 |
''' |
|
1502 |
CREATE OR REPLACE FUNCTION meta_table_dates_fn() |
|
1503 |
RETURNS trigger |
|
1504 |
LANGUAGE plpgsql |
|
1505 |
AS $$ |
|
1506 |
BEGIN |
|
1507 |
NEW.updated_at = NOW(); |
|
1508 |
RETURN NEW; |
|
1509 |
END; |
|
1510 |
$$;''' |
|
1511 |
) |
|
1512 |
cur.execute( |
|
1513 |
'''CREATE TRIGGER meta_table_dates_trg BEFORE UPDATE ON wcs_meta |
|
1514 |
FOR EACH ROW |
|
1515 |
WHEN (OLD.value IS DISTINCT FROM NEW.value) |
|
1516 |
EXECUTE PROCEDURE meta_table_dates_fn();''' |
|
1517 |
) |
|
1500 | 1518 |
else: |
1501 | 1519 |
cur.execute( |
1502 | 1520 |
'''SELECT column_name FROM information_schema.columns |
... | ... | |
1510 | 1528 |
if 'updated_at' not in existing_fields: |
1511 | 1529 |
cur.execute('''ALTER TABLE wcs_meta ADD COLUMN updated_at timestamptz DEFAULT NOW()''') |
1512 | 1530 | |
1513 |
cur.execute( |
|
1514 |
''' |
|
1531 |
cur.execute('''SELECT 1 FROM pg_proc WHERE proname = 'meta_table_dates_fn';''') |
|
1532 |
existing_function = {x[0] for x in cur.fetchall()} |
|
1533 |
if not 1 in existing_function: |
|
1534 |
cur.execute( |
|
1535 |
''' |
|
1515 | 1536 |
CREATE OR REPLACE FUNCTION meta_table_dates_fn() |
1516 | 1537 |
RETURNS trigger |
1517 | 1538 |
LANGUAGE plpgsql |
... | ... | |
1521 | 1542 |
RETURN NEW; |
1522 | 1543 |
END; |
1523 | 1544 |
$$;''' |
1524 |
) |
|
1525 |
cur.execute('DROP TRIGGER IF EXISTS meta_table_dates_trg ON wcs_meta;') |
|
1526 |
cur.execute( |
|
1527 |
'''CREATE TRIGGER meta_table_dates_trg BEFORE UPDATE ON wcs_meta |
|
1545 |
) |
|
1546 | ||
1547 |
cur.execute( |
|
1548 |
'''SELECT 1 FROM pg_trigger WHERE tgname = 'meta_table_dates_trg' AND tgrelid = 'wcs_meta'::regclass;''' |
|
1549 |
) |
|
1550 |
existing_trigger = {x[0] for x in cur.fetchall()} |
|
1551 |
if not 1 in existing_trigger: |
|
1552 |
cur.execute( |
|
1553 |
'''CREATE TRIGGER meta_table_dates_trg BEFORE UPDATE ON wcs_meta |
|
1528 | 1554 |
FOR EACH ROW |
1529 | 1555 |
WHEN (OLD.value IS DISTINCT FROM NEW.value) |
1530 | 1556 |
EXECUTE PROCEDURE meta_table_dates_fn();''' |
1531 |
) |
|
1557 |
)
|
|
1532 | 1558 | |
1533 | 1559 |
if not table_exists: |
1534 | 1560 |
if insert_current_sql_level: |
1535 |
- |