Class ClientParser

java.lang.Object
org.mariadb.jdbc.util.ClientParser
All Implemented Interfaces:
PrepareResult

public final class ClientParser extends Object implements PrepareResult
  • Field Details

    • sql

      private final String sql
    • query

      private final byte[] query
    • paramPositions

      private final List<Integer> paramPositions
    • valuesBracketPositions

      private final List<Integer> valuesBracketPositions
    • paramCount

      private final int paramCount
    • isInsert

      private final boolean isInsert
    • isInsertDuplicate

      private final boolean isInsertDuplicate
    • isMultiQuery

      private final boolean isMultiQuery
  • Constructor Details

    • ClientParser

      private ClientParser(String sql, byte[] query, List<Integer> paramPositions, List<Integer> valuesBracketPositions, boolean isInsert, boolean isInsertDuplicate, boolean isMultiQuery)
  • Method Details

    • parameterParts

      public static ClientParser parameterParts(String queryString, boolean noBackslashEscapes)
      For a given queryString, get
      • query - a byte array containing the UTF8 representation of that string
      • paramPositions - the byte positions of any '?' positional parameters in query
      and set the following flags:
      • isInsert - queryString contains 'INSERT' outside of quotes, without one of the characters '();>invalid input: '<'=-+,' immediately preceding or following
      • isInsertDuplicate - isInsert invalid input: '&'invalid input: '&' queryString contains 'DUPLICATE' outside of quotes, without one of the characters '();>invalid input: '<'=-+,' immediately preceding or following
      • isMulti - queryString contains text after the last ';' outside of quotes
      Parameters:
      queryString - query
      noBackslashEscapes - escape mode
      Returns:
      ClientParser
    • rewritableParts

      public static ClientParser rewritableParts(String queryString, boolean noBackslashEscapes)
      For a given queryString, get the fields and flags from parameterParts(String, boolean), and
      • valuesBracketPositions - a two-element list containing the positions of the opening and closing parenthesis of the VALUES block
      Parameters:
      queryString - query
      noBackslashEscapes - escape mode
      Returns:
      ClientParser
    • getSql

      public String getSql()
      Specified by:
      getSql in interface PrepareResult
    • getQuery

      public byte[] getQuery()
    • getParamPositions

      public List<Integer> getParamPositions()
    • getValuesBracketPositions

      public List<Integer> getValuesBracketPositions()
    • getParamCount

      public int getParamCount()
      Specified by:
      getParamCount in interface PrepareResult
    • isInsert

      public boolean isInsert()
    • isInsertDuplicate

      public boolean isInsertDuplicate()
    • isMultiQuery

      public boolean isMultiQuery()
    • isDelimiter

      private static boolean isDelimiter(byte b)
      Fast check if byte is a delimiter character: ();>invalid input: '<'=-+, Avoids String.indexOf() overhead
    • isWhitespace

      private static boolean isWhitespace(byte b)
      Fast check if byte is whitespace: space, \n, \r, \t
    • equalsIgnoreCase

      private static boolean equalsIgnoreCase(byte b, byte lower)
      Fast case-insensitive byte comparison for ASCII letters. Uses bitwise OR to convert to lowercase before comparison.