Skip to content

Commit

Permalink
Allow "skip" and "limit" as named parameters
Browse files Browse the repository at this point in the history
eg. SELECT FORM V SKIP :skip LIMIT :limit

Resolves: #5493
  • Loading branch information
luigidellaquila committed Dec 21, 2015
1 parent 78c9b7d commit be5417f
Show file tree
Hide file tree
Showing 5 changed files with 1,364 additions and 1,271 deletions.
14 changes: 12 additions & 2 deletions core/src/main/grammar/OrientSQL.jjt
Expand Up @@ -1677,10 +1677,20 @@ OPositionalParameter PositionalParameter():
} }


ONamedParameter NamedParameter(): ONamedParameter NamedParameter():
{} {
OIdentifier identifierParam;
Token token;
}
{ {
( (
<COLON> jjtThis.paramName = Identifier() <COLON>
(
identifierParam = Identifier() { jjtThis.paramName = identifierParam.toString(); }
|
token = <SKIP2> {jjtThis.paramName = token.image;}
|
token = <LIMIT> {jjtThis.paramName = token.image;}
)
) )
{ {
jjtThis.paramNumber = inputParamCount; jjtThis.paramNumber = inputParamCount;
Expand Down
Expand Up @@ -7,7 +7,7 @@
public class ONamedParameter extends OInputParameter { public class ONamedParameter extends OInputParameter {


protected int paramNumber; protected int paramNumber;
protected OIdentifier paramName; protected String paramName;


public ONamedParameter(int id) { public ONamedParameter(int id) {
super(id); super(id);
Expand All @@ -24,13 +24,13 @@ public Object jjtAccept(OrientSqlVisitor visitor, Object data) {


@Override @Override
public String toString() { public String toString() {
return ":" + paramName.toString(); return ":" + paramName;
} }


public void toString(Map<Object, Object> params, StringBuilder builder) { public void toString(Map<Object, Object> params, StringBuilder builder) {
Object finalValue = bindFromInputParams(params); Object finalValue = bindFromInputParams(params);
if (finalValue == this) { if (finalValue == this) {
builder.append(":" + paramName.toString()); builder.append(":" + paramName);
} else if (finalValue instanceof String) { } else if (finalValue instanceof String) {
builder.append("\""); builder.append("\"");
builder.append(OExpression.encode(finalValue.toString())); builder.append(OExpression.encode(finalValue.toString()));
Expand All @@ -44,7 +44,7 @@ public void toString(Map<Object, Object> params, StringBuilder builder) {


public Object bindFromInputParams(Map<Object, Object> params) { public Object bindFromInputParams(Map<Object, Object> params) {
if (params != null) { if (params != null) {
String key = paramName.toString(); String key = paramName;
if (params.containsKey(key)) { if (params.containsKey(key)) {
return toParsedTree(params.get(key)); return toParsedTree(params.get(key));
} }
Expand Down

0 comments on commit be5417f

Please sign in to comment.