|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectuk.ac.starlink.table.jdbc.SqlSyntax
public class SqlSyntax
Summarises some aspects of the syntax of an SQL variant, and provides some utilities based on that.
Field Summary | |
---|---|
static java.util.regex.Pattern |
SQL92_IDENTIFIER_REGEX
Standard regular expression for identifiers, as per SQL92. |
static java.lang.String[] |
SQL92_RESERVED
SQL92 list of reserved words. |
Constructor Summary | |
---|---|
SqlSyntax(java.lang.String[] reservedWords,
java.util.regex.Pattern identifierRegex,
char quoteChar)
Constructor. |
Method Summary | |
---|---|
static java.lang.String[] |
getParanoidReservedWords()
Returns a list of words that are known to be reserved in a mixed bag of popular RDBMSs. |
java.util.SortedSet<java.lang.String> |
getReservedWords()
Returns an alphabetical list of the reserved words known by this class, in normalised (upper case) form. |
boolean |
isIdentifier(java.lang.String word)
Indicates whether a given word is syntactically permitted to act as an identifier. |
boolean |
isReserved(java.lang.String word)
Indicates whether a given word is reserved. |
java.lang.String |
quote(java.lang.String word)
Returns a quoted version of a word. |
java.lang.String |
quoteIfNecessary(java.lang.String word)
Returns a string which can be used within an SQL query to refer to an item with the name of a given word. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.util.regex.Pattern SQL92_IDENTIFIER_REGEX
public static final java.lang.String[] SQL92_RESERVED
Constructor Detail |
---|
public SqlSyntax(java.lang.String[] reservedWords, java.util.regex.Pattern identifierRegex, char quoteChar)
reservedWords
- list of words considered reserved for this dialectidentifierRegex
- regular expression for an identifier token
in this dialectquoteChar
- character which may be used to quote words in
this dialect (thus avoiding their usual parsing);
words are quoted with a copy of this character
at start and end, doubled if this character is
embeddedMethod Detail |
---|
public java.util.SortedSet<java.lang.String> getReservedWords()
public boolean isReserved(java.lang.String word)
word
- word to test
public boolean isIdentifier(java.lang.String word)
word
- word to test
public java.lang.String quoteIfNecessary(java.lang.String word)
word
- word to use
word
public java.lang.String quote(java.lang.String word)
Note that quoting words is not harmless - unlike
for instance shell syntax, quotes are not just stripped off
where present before processing, but instead in SQL92 and hence
ADQL they modify the interpretation of what's quoted.
This is something to do with the way case folding is handled,
and I (mbt) didn't know about it until Markus Demleitner
persuaded me it's actually true. As it happens MySQL behaves
contrary to the standard in this respect (quoting of column names -
but not table names?? - is harmless) but (for instance) PostgreSQL
does not. Therefore do not use this method indiscriminately,
use quoteIfNecessary
instead.
word
- word to quote
public static java.lang.String[] getParanoidReservedWords()
|
Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved. | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |