oracle.kv.impl.query.compiler.ExprDeleteRow Maven / Gradle / Ivy
/*-
* Copyright (C) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle NoSQL
* Database made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/nosqldb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle NoSQL Database for a copy of the license and
* additional information.
*/
package oracle.kv.impl.query.compiler;
import oracle.kv.impl.api.table.FieldDefImpl;
import oracle.kv.impl.api.table.TableImpl;
import oracle.kv.impl.query.QueryException.Location;
import oracle.kv.impl.query.types.ExprType;
import oracle.kv.impl.query.types.ExprType.Quantifier;
import oracle.kv.impl.query.types.TypeManager;
/**
*
*/
public class ExprDeleteRow extends Expr {
private TableImpl theTable;
private Expr theInput;
private boolean theHasReturningClause;
private int[] thePrimKeyPositions;
ExprDeleteRow(
QueryControlBlock qcb,
StaticContext sctx,
Location location,
ExprSFW input,
boolean hasReturningClause) {
super(qcb, sctx, ExprKind.DELETE_ROW, location);
theInput = input;
input.addParent(this);
theTable = input.getFirstFrom().getTargetTable();
theHasReturningClause = hasReturningClause;
if (hasReturningClause) {
theType = theInput.getType();
} else {
theType = TypeManager.createType(FieldDefImpl.longDef,
Quantifier.ONE);
}
}
TableImpl getTable() {
return theTable;
}
@Override
int getNumChildren() {
return 1;
}
@Override
Expr getInput() {
return theInput;
}
void setInput(Expr newExpr, boolean destroy) {
theInput.removeParent(this, destroy);
theInput = newExpr;
newExpr.addParent(this);
}
boolean hasReturningClause() {
return theHasReturningClause;
}
void addPrimKeyPositions(int[] positions) {
thePrimKeyPositions = positions;
theType = computeType();
}
int[] getPrimKeyPositions() {
return thePrimKeyPositions;
}
@Override
ExprType computeType() {
return theType;
}
@Override
boolean mayReturnNULL() {
return false;
}
@Override
void displayContent(StringBuilder sb, QueryFormatter formatter) {
theInput.display(sb, formatter);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy