← Back to team overview

dhis2-devs team mailing list archive

Re: [Bug 1191698] Re: Analytics creation causes SQL syntax error

 

Hi, the UIDs are generated in Java code in the service layer and has
nothing to do with the database sequence. If you have UIDs starting with
numbers then they did not come from DHIS ;)






On Mon, Jun 17, 2013 at 11:09 AM, Edward Ari Bichetero
<ebichete@xxxxxxxxx>wrote:

> Hi Lars,
>
> Do you mean that the new code releaseses will always generate UIDs that
> start with alphabetic characters ?
>
> If so, does it correctly upgrade the "hibernate_sequence" that exists in
> the database ? I assume that is what
> is used to derive UIDs.
>
> And what happens to existing UIDs that start with numeric digits ? We have
> a number of those in our
> Ugandan database.
>
> - Edward -
>
> --
> You received this bug notification because you are a member of DHIS 2
> developers, which is subscribed to DHIS.
> https://bugs.launchpad.net/bugs/1191698
>
> Title:
>   Analytics creation causes SQL syntax error
>
> Status in DHIS 2 - District Health Information Software:
>   New
>
> Bug description:
>   The analytics tables use DHIS2 UIDs as fieldnames in a number of
>   tables. However the rules for a table column's name are restricted by
>   the rules for any identifiers in the SQL language.  Namely:
>
>   - Identifiers  and key words must begin with a letter or an underscore.
> Subsequent characters in an identifier or key word can be letters,
> underscores, digits (0-9), or dollar signs ($)
>   - Quoted identifiers can contain any character, except the character
> with code zero. (To include a double quote, write two double quotes.) This
> allows constructing table or column names that would otherwise not be
> possible, such as ones containing spaces or ampersands
>
>   The SQL generated during the analytics creation process uses unquoted
>   identifiers and therefore any UID involved that starts with a digit
>   will cause a syntax error.
>
>   There are two possible solutions to this problem:
>
>   1) Add quotes to to all identifiers.
>   2) Prefix UID derived identifiers with a compatible fixed string like
> "UID" ("5AfiAeRLQkm" => "UID5AfiAeRLQkm")
>
>   The choice of route will depend on how difficult it is to change. If
>   all we require to quote identifiers is modifying an ORM setting then
>   route 1 is the obvious choice.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/dhis2/+bug/1191698/+subscriptions
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help   : https://help.launchpad.net/ListHelp
>

References