Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-13625

Hive Prepared Statement when executed with escape characters in parameter fails

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.3.0
    • Component/s: JDBC
    • Labels:
      None

      Description

      When setting parameters to a Hive Prepared Statement, if the parameter has an odd number of escape characters, then the Statement fails.

      For example, I set one of the parameters to "/somepath/\044

      {yyyy}

      /\044

      {MM}

      /\044

      {dd}

      /". Here, I have escaped the dollar character with \044 because Hive gives an Atlas exception with "$" character.
      Now, when the parameters are getting set inside Hive, getCharIndexFromSqlByParamLocation throws an Exception.
      Hive records something called signal count.

      if (c == '\'' || c == '
      ')// record the count of char "'" and char "\"

      { signalCount++; }

      And the parameter is set only if the signalCount %2 is 0.

      else if (c == cchar && signalCount % 2 == 0) {// check if the ? is really the parameter
      num++;
      if (num == paramLoc)

      { charIndex = i; break; }

      Since my parameter has three "\" characters, the signal Count modulo is not 0 and the parameter is not set at all throwing an exception.

        Attachments

        1. HIVE-13625.patch
          9 kB
          Zoltan Haindrich

          Issue Links

            Activity

              People

              • Assignee:
                kgyrtkirk Zoltan Haindrich
                Reporter:
                daya.venkatesan Daya Venkatesan
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: