Skip to content

Bug: Can't track defaults properly and double the work is being applied #277

@sam-mosleh

Description

@sam-mosleh

Step 1

Create a table

CREATE TABLE people (
    id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    created_at timestamptz
);

Step 2

Add a default

CREATE TABLE people (
    id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    created_at timestamptz DEFAULT NOW() NOT NULL
);

Expected behavior: To add default NOW()
Actual behavior: The default is not tracked in the plan below

Plan: 1 to modify.

Summary by type:
  tables: 1 to modify

Tables:
  ~ people
    ~ created_at (column)

DDL to be executed:
--------------------------------------------------

ALTER TABLE people ADD CONSTRAINT created_at_not_null CHECK (created_at IS NOT NULL) NOT VALID;

ALTER TABLE people VALIDATE CONSTRAINT created_at_not_null;

ALTER TABLE people ALTER COLUMN created_at SET NOT NULL;

ALTER TABLE people DROP CONSTRAINT created_at_not_null;

ALTER TABLE people ADD CONSTRAINT created_at_not_null CHECK (created_at IS NOT NULL) NOT VALID;

ALTER TABLE people VALIDATE CONSTRAINT created_at_not_null;

ALTER TABLE people ALTER COLUMN created_at SET NOT NULL;

ALTER TABLE people DROP CONSTRAINT created_at_not_null;

Do you want to apply these changes? (yes/no):

Context

Tested version 1.6.2@ca0a203 darwin/arm64

@tianzhou Willing to do a PR if you feel comfortable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions