Git Product home page Git Product logo

psqlpack's People

Contributors

justinlatimer avatar paupino avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

toidiu cargorust

psqlpack's Issues

Utilize topological sort order for generating changesets

Relies on #19 which generates the order.
Once the order has been generated we should be able to use this to help generate changeset instruction ordering. Some things are implied. e.g. Database is always first, Schema is always second. However somethings are not, e.g. table ordering.

Another item which may need investigation is function ordering. These should come after table generation however they itself need ordering. At the moment we ignore this ordering due to lack of function parsing.

LALR(1) error handling and recovery

Implement error recovery into LALRPOP. This is not so that we can recover from the error but moreso handle it a little better. For example, it'd be nice having the span results so we could potentially underline the error in the CLI.

Allow for constraint modifications without a drop/create

Currently primary key and foreign key constraints will issue a drop/create due to not all versions of Postgres supporting the ALTER statement. After #89 is completed, we should look at supporting these statements as they are likely more efficient.

Add in options to publish profile

Add in some further options:

  • allow_drop_tables
  • allow_drop_columns
  • allow_drop_primary_constraints
  • allow_drop_foreign_constraints

Perhaps we should also consider expanding the allow_unsafe_operations so that it is more explicit.

Handle extensions extensibly

I think we're going to have to really think about how to implement these properly. They can create their own types/schemas/tables/functions etc which is useful information for post compilation steps. e.g. we may want to error when we find a dependency that is unrecognized, however at the moment things like ST_POINT which come as part of postgis aren't able to be accurately captured.

Perhaps we create explicit psqlpack packages which can be linked? If we do that, how do we maintain them? Who maintains them?

Expand PG version Travis tests

Define the minimum PG version that we support and then expand Travis tests to provide coverage of these as much as possible. Current tests use 9.4.

Add in SQLCMD variables

Command variables will allow in place variable matching to be applied to scripts on parse. This could be resolved entirely at the Lexer level. In saying that, we may want to have some better lexer Debug level logging before doing this i.e. start logging symbols, state change as well as symbol replacements (this task).

Add in dependency graph generation

This could be output within the report possibly however it'd be useful to show for debugging. Technically it should be called when loading the dacpac also (i.e. load_project).

Implement Indexes

Currently indexes are implicitly ignored. Supporting indexes is important for psqlpack being used upon production databases.

Write some integration tests for updating PG directly

Currently we have unit tests covering some delta changes however what would be super useful is also including integration tests for travis to run.

This will also allow us to accurately understand coverage from an integration perspective.

Add in project references

This should be the first step in the process.

Loading project references...
Loading project files...
Building the project model and resolving object interdependencies...
Validating the project model...

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.