GithubHelp home page GithubHelp logo

Add timestamp column to version_table about tern HOT 3 OPEN

jackc avatar jackc commented on August 26, 2024
Add timestamp column to version_table

from tern.

Comments (3)

pscheid92 avatar pscheid92 commented on August 26, 2024

I would love to give this one a try. My overall idea would be like this:

1. Creation of new version tables

  • Extend the version table with a update_timestamp column of type timestamptz
  • Write an initial value with now() in the insert into statement

2. Handle updates

The challenge here is handling existing version tables. I would propose a change that leaves existing version tables alone. If a user wants this feature, we could provide documentation on migrating the version table.

  • After acquiring the advisory lock, check the pg_catalog if a update_timestamp column is present
  • If not, use the existing update statement that increments or decrements the version
  • If it is present, use an extended update statement, to set update_timestamp to now()

What are your thoughts @jackc?

from tern.

jackc avatar jackc commented on August 26, 2024

It's not something I've felt a particular need for, but if it were to be done I think it should be more extensive. That is, rather than simply record the time the last migration is run we should change the migration table to store a row for each migration with the migration number and the time it was run. This preserves more information and avoids the problem of what to do with the timestamp when rolling back.

As far as compatibility goes I suppose switching based on the structure of the version table is reasonable. Though I expect for there to be a tern v2 sometime this year (use pgx v5 and fs.FS) so maybe it would make sense to only make the change then (again if it is done at all).

from tern.

pscheid92 avatar pscheid92 commented on August 26, 2024

Yes, great idea! And waiting for a version v2 seems reasonable to me. Thank you very much.

from tern.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.