I share Saptarshi's concern, particularly if there are lots of modules out there that may be making the "voided = 0" assumptions in direct SQL queries. Will this be something that is not backwards compatible and requires lots of module changes in order to successfully upgrade?

On 08/29/2011 02:18 AM, Ben Wolfe wrote:
The changes should be down at the db layer, right? I think that should be fine.

Is there a way to tell postgres to treat 0 like a 'false'? Perhaps with a db connection string property?

Ben

On Sun, Aug 28, 2011 at 5:42 AM, Saptarshi Purkayastha <[email protected] <mailto:[email protected]>> wrote:

    One of the big problems that I'm encountering at the moment for
    making OpenMRS run on most database servers is with our assumption
    of the BOOLEAN type. Because MySQL stores BOOLEAN as TINYINT(1),
    we have made the assumption that BOOLEAN will be represented as 0
    or 1. Thus, the column type for (retired, voided etc) in liquibase
    was using smallint (to make it ANSI-SQL :D) as the type and
    default as 0 (FALSE). This was fairly easy to change in the
    liquibase xmls by a search-and-replace (but still looking up all
    the columns)

    The bigger issue surrounding this assumption is in code, where we
    have made voided=0 in queries or getInt() from ResultSet. These
    are fine for the MySQL assumption, but doesn't work with other
    databases. This is a fairly big change to do, with changes at many
    places in code...

    Are we ready??
    ---
    Regards,
    Saptarshi PURKAYASTHA

    My Tech Blog: http://sunnytalkstech.blogspot.com
    You Live by CHOICE, Not by CHANCE


    On 18 August 2011 15:59, Ben Wolfe <[email protected]
    <mailto:[email protected]>> wrote:

        The funny thing is that the liquibase changeset files were
        used for the initial scripts was for database portability.  If
        you can export them as standard sql files and run those just
        as easily as the liquibase ones, go for it.  The tricky thing
        to solve would be how to get the progress bars to work in the
        initialization wizard.

        You can either change the datatypes to a generic ansi standard
        ones, or change to something that liquibase knows about and
        converts to each different datatype on the different dbms's
        correctly.

        Ben


        On Wed, Aug 17, 2011 at 10:47 PM, Saptarshi Purkayastha
        <[email protected] <mailto:[email protected]>> wrote:

            MySQL longtext is the same as the TEXT of postgresql...
            for the others we have to make database specific options
            between the data types
            tinyint to smallint in the liquibase-schema-only
            there are many similar difference that are database
            specific and we have to make database specific datatypes.

            I'm yet to go through all the changes required... but will
            make as these come. But for datatypes that are
            incompatible, probably be database specific.
            Is that ok?? or we should move those to ANSI-standard ones
            only??


            ---
            Regards,
            Saptarshi PURKAYASTHA

            My Tech Blog: http://sunnytalkstech.blogspot.com
            You Live by CHOICE, Not by CHANCE


            On 18 August 2011 00:48, Darius Jazayeri
            <[email protected]
            <mailto:djazayeri%[email protected]>> wrote:

                Hi Saptarshi,

                In principle I'm fine with these, but let's get at the
                specifics of datatypes.

                We probably use the mysql text, mediumtext, and
                longtext types a lot, because they're really
                usefully-sized datatypes. What will we replace those with?

                What other datatypes are you expecting to change?

                -Darius

                On Wed, Aug 17, 2011 at 11:25 AM, Saptarshi
                Purkayastha <[email protected]
                <mailto:[email protected]>> wrote:

                    Hi,

                    While we were recently discussing that OpenMRS
                    should run on multiple database servers, I started
                    working on Support Multiple Databases in OpenMRS
                    Installation and Update
                    <https://tickets.openmrs.org/browse/TRUNK-1925>.
                    There are some of the following broad changes that
                    need to be made the the liquibase xml so that we
                    can install OpenMRS on different databases (target
                    MySQL, Postgres, MsSQL... and may be later Oracle).

                    1.) Change datatypes and create tables that are
                    compatible with all the databases (directly for
                    compatible types or database specific for
                    non-compatible types)
                    2.) Remove precision from many columns which are
                    not compatible across all those database servers
                    3.) Divide a larger changeset into smaller
                    changeset so that they can be done commonly (by
                    changing syntax) across multiple database servers.
                    4.) Due to move to liquibase 2.0, all checksums
                    for changesets have been NULL'd and then changed
                    to the new format. This should happen
                    automatically, but if anyone depends on these
                    checksums, then you should reply to this email :)

                    We may also have to change if anywhere non-ANSI
                    syntax or MySQL-syntax has been used in the DAO. I
                    haven't reached that far to tell how many such
                    instances exist, but I hope there aren't many such
                    places

                    What do other developers think about these
                    changes? Any suggestions on the way?? Anything
                    that u think should be avoided or done?? These are
                    fairly large changes and may result in
                    incompatible checksums for already run changesets.


                    PS: On a sidenote, I would like to highlight that
                    for new installations it is silly that we are
                    doing changesets based installations. While the
                    world has moved to image based deployments for OS
                    and large-software packages, we did the reverse
                    and moved to changesets based installations.
                    Upgrades are easier through changesets, but for
                    new installations they are lengthy and boring. I
                    would like to propose the for new installations,
                    just an sqldump deploy is easy and fast, while
                    keeping to changesets for upgrades.

                    ---
                    Regards,
                    Saptarshi PURKAYASTHA

                    My Tech Blog: http://sunnytalkstech.blogspot.com
                    You Live by CHOICE, Not by CHANCE
                    
------------------------------------------------------------------------
                    Click here to unsubscribe
                    
<mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l>
from OpenMRS Developers' mailing list


            
------------------------------------------------------------------------
            Click here to unsubscribe
            <mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l>
            from OpenMRS Developers' mailing list



    ------------------------------------------------------------------------
    Click here to unsubscribe
    <mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l> from
    OpenMRS Developers' mailing list


------------------------------------------------------------------------
Click here to unsubscribe <mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l> from OpenMRS Developers' mailing list

_________________________________________

To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to 
[email protected] with "SIGNOFF openmrs-devel-l" in the  body (not 
the subject) of your e-mail.

[mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]

Reply via email to