Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.apache.derby.iapi.types
Class Like  view Like download Like.java

java.lang.Object
  extended byorg.apache.derby.iapi.types.Like

public class Like
extends java.lang.Object

Like matching algorithm. Not too speedy for %s. SQL92 says the escape character can only and must be followed by itself, %, or _. So if you choose % or _ as the escape character, you can no longer do that sort of matching. Not the most recent Like -- missing the unit tests


Field Summary
private static char anyChar
           
private static char anyString
           
private static java.lang.String SUPER_STRING
           
 
Constructor Summary
private Like()
           
 
Method Summary
(package private) static java.lang.Boolean checkLengths(int vLoc, int vEnd, int pLoc, char[] pat, int pEnd)
          checkLengths -- non-national chars Returns null if we are not done.
(package private) static java.lang.Boolean checkLengths(int vLoc, int vEnd, int pLoc, int[] pat, int pEnd, int[] anyStringInts)
          checkLengths -- national chars Returns null if we are not done.
(package private) static int getMinLen(char[] pattern, int pStart, int pEnd, boolean haveEsc, char escChar)
          Calculate the shortest length string that could match this pattern for non-national chars
(package private) static int getMinLen(int[] pattern, int pStart, int pEnd, boolean haveEsc, int[] escCharInts, int[] anyStringInts)
          Calculate the shortest length string that could match this pattern for national chars
private static java.lang.String greaterEqualString(java.lang.String pattern, char escChar)
          greaterEqualString -- for Escape clause only Walk the pattern character by character
static java.lang.String greaterEqualString(java.lang.String pattern, java.lang.String escape)
          Return the substring from the pattern for the optimization >= clause.
static java.lang.String greaterEqualStringFromParameter(java.lang.String pattern)
           
static java.lang.String greaterEqualStringFromParameterWithEsc(java.lang.String pattern, java.lang.String escape)
           
static boolean isLikeComparisonNeeded(java.lang.String pattern)
          Return whether or not the like comparison is still needed after performing the like transformation on a constant string.
static boolean isOptimizable(java.lang.String pattern)
          Determine whether or not this LIKE can be transformed into optimizable clauses.
static java.lang.String lessThanString(java.lang.String pattern)
          Return the substring from the pattern for the < clause.
static java.lang.String lessThanString(java.lang.String pattern, java.lang.String escape)
          Return the substring from the pattern for the < clause.
static java.lang.String lessThanStringFromParameter(java.lang.String pattern)
           
static java.lang.String lessThanStringFromParameterWithEsc(java.lang.String pattern, java.lang.String escape)
           
static java.lang.Boolean like(char[] value, int valueLength, char[] pattern, int patternLength)
           
static java.lang.Boolean like(char[] val, int valLength, char[] pat, int patLength, char[] escape, int escapeLength)
           
private static java.lang.Boolean like(char[] val, int vLoc, int vEnd, char[] pat, int pLoc, int pEnd, char[] escape, int escapeLength)
           
static java.lang.Boolean like(int[] val, int valLength, int[] pat, int patLength, int[] escape, int escapeLength, java.text.RuleBasedCollator collator)
          For national chars.
static java.lang.Boolean like(int[] value, int valueLength, int[] pattern, int patternLength, java.text.RuleBasedCollator collator)
           
private static java.lang.Boolean like(int[] val, int vLoc, int vEnd, int[] pat, int pLoc, int pEnd, int[] escape, int escapeLength, java.text.RuleBasedCollator collator)
           
private static boolean matchSpecial(int[] pat, int patStart, int patEnd, int[] specialInts)
          matchSpecial check the pattern against the various special character arrays.
static java.lang.String stripEscapesNoPatternChars(java.lang.String pattern, char escChar)
          stripEscapesNoPatternChars
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

anyChar

private static final char anyChar
See Also:
Constant Field Values

anyString

private static final char anyString
See Also:
Constant Field Values

SUPER_STRING

private static final java.lang.String SUPER_STRING
See Also:
Constant Field Values
Constructor Detail

Like

private Like()
Method Detail

like

public static java.lang.Boolean like(char[] val,
                                     int valLength,
                                     char[] pat,
                                     int patLength,
                                     char[] escape,
                                     int escapeLength)
                              throws org.apache.derby.iapi.error.StandardException

like

public static java.lang.Boolean like(int[] val,
                                     int valLength,
                                     int[] pat,
                                     int patLength,
                                     int[] escape,
                                     int escapeLength,
                                     java.text.RuleBasedCollator collator)
                              throws org.apache.derby.iapi.error.StandardException
For national chars.


like

private static java.lang.Boolean like(char[] val,
                                      int vLoc,
                                      int vEnd,
                                      char[] pat,
                                      int pLoc,
                                      int pEnd,
                                      char[] escape,
                                      int escapeLength)
                               throws org.apache.derby.iapi.error.StandardException

like

private static java.lang.Boolean like(int[] val,
                                      int vLoc,
                                      int vEnd,
                                      int[] pat,
                                      int pLoc,
                                      int pEnd,
                                      int[] escape,
                                      int escapeLength,
                                      java.text.RuleBasedCollator collator)
                               throws org.apache.derby.iapi.error.StandardException

getMinLen

static int getMinLen(char[] pattern,
                     int pStart,
                     int pEnd,
                     boolean haveEsc,
                     char escChar)
Calculate the shortest length string that could match this pattern for non-national chars


getMinLen

static int getMinLen(int[] pattern,
                     int pStart,
                     int pEnd,
                     boolean haveEsc,
                     int[] escCharInts,
                     int[] anyStringInts)
Calculate the shortest length string that could match this pattern for national chars


checkLengths

static java.lang.Boolean checkLengths(int vLoc,
                                      int vEnd,
                                      int pLoc,
                                      char[] pat,
                                      int pEnd)
checkLengths -- non-national chars Returns null if we are not done. Returns true if we are at the end of our value and pattern Returns false if there is more pattern left but out of input value


checkLengths

static java.lang.Boolean checkLengths(int vLoc,
                                      int vEnd,
                                      int pLoc,
                                      int[] pat,
                                      int pEnd,
                                      int[] anyStringInts)
checkLengths -- national chars Returns null if we are not done. Returns true if we are at the end of our value and pattern Returns false if there is more pattern left but out of input value


matchSpecial

private static boolean matchSpecial(int[] pat,
                                    int patStart,
                                    int patEnd,
                                    int[] specialInts)
matchSpecial check the pattern against the various special character arrays. The array can be anyStringInts, anyCharInts or anyEscChars (always 1)


like

public static java.lang.Boolean like(char[] value,
                                     int valueLength,
                                     char[] pattern,
                                     int patternLength)
                              throws org.apache.derby.iapi.error.StandardException

like

public static java.lang.Boolean like(int[] value,
                                     int valueLength,
                                     int[] pattern,
                                     int patternLength,
                                     java.text.RuleBasedCollator collator)
                              throws org.apache.derby.iapi.error.StandardException

isOptimizable

public static boolean isOptimizable(java.lang.String pattern)
Determine whether or not this LIKE can be transformed into optimizable clauses. It can if the pattern is non-null, of length > 0 and the first character is not a wild card.


greaterEqualStringFromParameter

public static java.lang.String greaterEqualStringFromParameter(java.lang.String pattern)
                                                        throws org.apache.derby.iapi.error.StandardException

greaterEqualStringFromParameterWithEsc

public static java.lang.String greaterEqualStringFromParameterWithEsc(java.lang.String pattern,
                                                                      java.lang.String escape)
                                                               throws org.apache.derby.iapi.error.StandardException

greaterEqualString

public static java.lang.String greaterEqualString(java.lang.String pattern,
                                                  java.lang.String escape)
                                           throws org.apache.derby.iapi.error.StandardException
Return the substring from the pattern for the optimization >= clause.


greaterEqualString

private static java.lang.String greaterEqualString(java.lang.String pattern,
                                                   char escChar)
                                            throws org.apache.derby.iapi.error.StandardException
greaterEqualString -- for Escape clause only Walk the pattern character by character


stripEscapesNoPatternChars

public static java.lang.String stripEscapesNoPatternChars(java.lang.String pattern,
                                                          char escChar)
                                                   throws org.apache.derby.iapi.error.StandardException
stripEscapesNoPatternChars


lessThanString

public static java.lang.String lessThanString(java.lang.String pattern)
                                       throws org.apache.derby.iapi.error.StandardException
Return the substring from the pattern for the < clause. (NOTE: This may be null in the degenerate case where the last char before the first wild card can't be incremented.) Optimized for ESCAPE This function uses the greaterThanString, and bumps its last character by one. This string has no escape characters, they were stripped out, and ends just before any real pattern chars or at the end of the pattern literal. See LikeEscapeOp*Node.preprocess.


lessThanStringFromParameter

public static java.lang.String lessThanStringFromParameter(java.lang.String pattern)
                                                    throws org.apache.derby.iapi.error.StandardException

lessThanStringFromParameterWithEsc

public static java.lang.String lessThanStringFromParameterWithEsc(java.lang.String pattern,
                                                                  java.lang.String escape)
                                                           throws org.apache.derby.iapi.error.StandardException

lessThanString

public static java.lang.String lessThanString(java.lang.String pattern,
                                              java.lang.String escape)
                                       throws org.apache.derby.iapi.error.StandardException
Return the substring from the pattern for the < clause. (NOTE: This may be null in the degenerate case where the last char before the first wild card can't be incremented.) This is unoptimized for ESCAPE.


isLikeComparisonNeeded

public static boolean isLikeComparisonNeeded(java.lang.String pattern)
Return whether or not the like comparison is still needed after performing the like transformation on a constant string. The comparison is not needed if the constant string is of the form: CONSTANT% (constant followed by a trailing %)