<div dir="ltr">Hi Artyon,<div><br></div><div>I believe that Liquibase satisfies, at least partially, your requirements. In particular, it is able diff databases (<a href="http://www.liquibase.org/documentation/diff.html">http://www.liquibase.org/documentation/diff.html</a>).</div><div><br></div><div>Regards,</div><div>Saulo</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 8, 2017 at 4:52 AM, Artyom Shalkhakov <span dir="ltr"><<a href="mailto:artyom.shalkhakov@gmail.com" target="_blank">artyom.shalkhakov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello all,<div><br></div><div>I'd like to see Ur/Web helping with database migrations. Currently, the compiler will output an SQL script containing DDL statements to create the schema from scratch.</div><div><br></div><div>Ur/Web largely follows a "code-first" approach: the program's code is authoritative source of the database schema (or, put it differently, program's code is enough to infer the definition of the database schema).</div><div><br></div><div>My idea is to have Ur/Web generate the database schema in a database-independent format (e.g. as some simple JSON), and then use a tool to find the diff/patch between two such schemas.</div><div><br></div><div>Having searched for off-the-shelf tools to help with generating DDL statements given two schemas expressed in a database-independent format, I came up with basically nothing that can be easily reused.[2]</div><div><br></div><div><div>I'm looking for help with the format definition (preferably something that comes with tools: e.g. convert schema definition to DDL of target database). Seems like the simplest/best way forward is to go with an Ur/Web-specific tool.</div><span class="gmail-HOEnZb"><font color="#888888"><div><br></div>-- <br><div class="gmail-m_-8256045409595208792gmail_signature">Cheers,<br>Artyom Shalkhakov<br></div><div class="gmail-m_-8256045409595208792gmail_signature"><br></div><div class="gmail-m_-8256045409595208792gmail_signature">[1] <a href="https://github.com/urweb/urweb/issues/65" target="_blank">https://github.com/urweb/<wbr>urweb/issues/65</a></div><div class="gmail-m_-8256045409595208792gmail_signature">[2] <a href="https://github.com/urweb/urweb/issues/65#issuecomment-277904189" target="_blank">https://github.com/urweb/<wbr>urweb/issues/65#issuecomment-<wbr>277904189</a></div>
</font></span></div></div>
<br>______________________________<wbr>_________________<br>
Ur mailing list<br>
<a href="mailto:Ur@impredicative.com">Ur@impredicative.com</a><br>
<a href="http://www.impredicative.com/cgi-bin/mailman/listinfo/ur" rel="noreferrer" target="_blank">http://www.impredicative.com/<wbr>cgi-bin/mailman/listinfo/ur</a><br>
<br></blockquote></div><br></div></div>