Uploaded image for project: 'Apache AsterixDB'
  1. Apache AsterixDB
  2. ASTERIXDB-2272

Change character positions inside a string from 1-based to 0-based

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: FUN - Functions
    • Labels:
      None

      Description

      Change how string functions count character positions inside a string.
      Currently string functions position(), substring() and some others assume that the first character is at position 1.
      The proposal is to change the first position to 0, to better align with array element positions (which also start with 0), and other languages.
      This change will also apply to binary functions (below) and will be effective in both SQLPP and AQL.
       
      The following functions will be affected:
      position(),
      regexp_position(),
      substring()/substr(),
      sub_binary(),
      find_binary()
       
      This might be a disrupting change for some users so we will also introduce a cluster-wide configuration parameter (“compiler.stringoffset”) for backwards compatibility:
      compiler.stringoffset = 0   // first character position is assumed to be 0 (new default)
      compiler.stringoffset = 1   // first character position is assumed to be 1 (backwards-compatible setting)
       
      The query migration path is straightforward, for example:
      substring(“abcdef”, 1) will need to be changed to substring(“abcdef”, 0), etc, same applies to sub_binary().
      position(), regexp_position(), and find_binary() will return one less than they used to, but would still return -1 if the value is not found.

        Attachments

          Activity

            People

            • Assignee:
              dlychagin-cb Dmitry Lychagin
              Reporter:
              dlychagin-cb Dmitry Lychagin
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: