protected Node visitDereferenceExpression( final DereferenceExpression node, final Object context ) { // use an if/else block here (instead of isPresent.map(...).orElse(...)) so only one object // gets instantiated (issue #1784) if (node.getLocation().isPresent()) { return new DereferenceExpression(node.getLocation().get(), (Expression) process(node.getBase(), context), node.getFieldName() ); } else { return new DereferenceExpression((Expression) process(node.getBase(), context), node.getFieldName() ); } }
@Override public Node visitDereference(final SqlBaseParser.DereferenceContext context) { final String fieldName = getIdentifierText(context.identifier()); final Expression baseExpression = (Expression) visit(context.base); return new DereferenceExpression(getLocation(context), baseExpression, fieldName); }
private DereferenceExpression getNewDereferenceExpression( final DereferenceExpression dereferenceExpression, final Object context ) { return new DereferenceExpression( dereferenceExpression.getLocation(), (Expression) process(dereferenceExpression.getBase(), context), dereferenceExpression.getFieldName()); } }
@Test public void shouldFormatDereferenceExpression() { assertThat(ExpressionFormatter.formatExpression(new DereferenceExpression(new StringLiteral("foo"), "name")), equalTo("'foo'->name")); }
QualifiedName.of(prefixName) ); return new DereferenceExpression( getLocation(context), baseExpression, QualifiedName.of(dataSourceExtractor.getLeftAlias()) ); return new DereferenceExpression(getLocation(context), baseExpression, columnName); } else if (dataSourceExtractor.getRightFieldNames().contains(columnName)) { final Expression baseExpression = QualifiedName.of(dataSourceExtractor.getRightAlias()) ); return new DereferenceExpression(getLocation(context), baseExpression, columnName); } else { throw new InvalidColumnReferenceException("Field " + columnName + " is ambiguous."); QualifiedName.of(dataSourceExtractor.getFromAlias()) ); return new DereferenceExpression(getLocation(context), baseExpression, columnName);