public ResultSet(TParseTreeNode gspObject) { if (gspObject == null) { throw new System.ArgumentException("ResultSet arguments can't be null."); } id = ++Table.TABLE_ID; this.gspObject = gspObject; TSourceToken startToken = gspObject.startToken; TSourceToken endToken = gspObject.endToken; if (startToken != null) { this.startPosition = new Tuple <long, long>(startToken.lineNo, startToken.columnNo); } else { Console.Error.WriteLine(); Console.Error.WriteLine("Can't get start token, the start token is null"); } if (endToken != null) { this.endPosition = new Tuple <long, long>(endToken.lineNo, endToken.columnNo + endToken.astext.Length); } else { Console.Error.WriteLine(); Console.Error.WriteLine("Can't get end token, the end token is null"); } }
public virtual bool exprVisit(TParseTreeNode pNode, bool isLeafNode) { if (!isLeafNode) { // We return the value or appended value after recursion of the where clause of this statement/nested query // columnTableStmt.ExpressionStatement = pNode.String; Console.WriteLine(pNode.String); } return(true); }
public virtual bool exprVisit(TParseTreeNode pNode, bool isLeafNode) { string sign = ""; if (isLeafNode) { sign = "*"; } Console.WriteLine(sign + pNode.GetType().ToString() + " " + pNode.ToString()); return(true); }
public virtual bool exprVisit(TParseTreeNode pNode, bool isLeafNode) { if (pNode.startToken == column.startToken && pNode.endToken == column.endToken) { if (pNode is TExpression) { ((TExpression)pNode).remove(); } } return(true); }
public virtual bool exprVisit(TParseTreeNode pNode, bool isLeafNode) { if (pNode is TExpression) { TExpression expr = (TExpression)pNode; if ((Regex.Match(expr.ToString(), "'\\s*'").Success || Regex.Match(expr.ToString(), "\"\\s*\"").Success) && (expr.ParentExpr != null && isLogicExpression(expr.ParentExpr))) { piggybacked = true; } } return(true); }
public virtual bool exprVisit(TParseTreeNode pNode, bool isLeafNode) { TExpression expr = (TExpression)pNode; switch ((expr.ExpressionType)) { case EExpressionType.simple_object_name_t: TObjectName obj = expr.ObjectOperand; if (obj.ObjectType != TObjectName.ttobjNotAObject) { Console.WriteLine(getColumnWithBaseTable(obj)); } break; case EExpressionType.function_t: functionCallVisitor fcv = new functionCallVisitor(statement); expr.FunctionCall.accept(fcv); break; } return(true); }
public virtual bool exprVisit(TParseTreeNode pnode, bool pIsLeafNode) { TExpression expression = (TExpression)pnode; if (expression.ExpressionType == EExpressionType.parenthesis_t) { expression = expression.LeftOperand; } if (is_compare_condition(expression.ExpressionType)) { TExpression leftExpr = (TExpression)expression.LeftOperand; TExpression rightExpr = (TExpression)expression.RightOperand; TExpression[] leftExprs = new TExpression[] { leftExpr }; TExpression[] rightExprs = new TExpression[] { rightExpr }; if (leftExpr != null && !checkCondition(leftExprs)) { removeExpression(expression); } expression.LeftOperand = leftExprs[0]; if (rightExpr != null && !checkCondition(rightExprs)) { removeExpression(expression); } expression.RightOperand = rightExprs[0]; if ((expression.LeftOperand != null && string.ReferenceEquals(toExprString(expression.LeftOperand.ToScript()), null)) || (expression.RightOperand != null && string.ReferenceEquals(toExprString(expression.RightOperand.ToScript()), null))) { removeExpression(expression); } } if (expression.ExpressionType == EExpressionType.between_t) { TExpression[] exprs = new TExpression[] { expression }; if (!checkCondition(exprs)) { removeExpression(expression); } if (expression.OperatorToken != null && string.ReferenceEquals(toExprString(expression.OperatorToken.ToString()), null)) { removeExpression(expression); } } if (expression.ExpressionType == EExpressionType.pattern_matching_t) { TExpression[] exprs = new TExpression[] { expression }; if (!checkCondition(exprs)) { removeExpression(expression); } if (expression.OperatorToken != null && string.ReferenceEquals(toExprString(expression.OperatorToken.ToString()), null)) { removeExpression(expression); } } if (expression.ExpressionType == EExpressionType.in_t) { TExpression left = expression.LeftOperand; TExpression[] leftExprs = new TExpression[] { left }; if (!checkCondition(leftExprs)) { removeExpression(expression); return(true); } expression.LeftOperand = leftExprs[0]; TExpression right = expression.RightOperand; TExpression[] rightExprs = new TExpression[] { right }; if (right.SubQuery != null) { right.SubQuery.String = removevars.remove(right.SubQuery); } else if (!checkCondition(rightExprs)) { removeExpression(expression); } expression.RightOperand = rightExprs[0]; if (expression.OperatorToken != null && string.ReferenceEquals(toExprString(expression.OperatorToken.ToString()), null)) { removeExpression(expression); } } if (expression.FunctionCall != null) { TFunctionCall func = (TFunctionCall)expression.FunctionCall; checkFunctionCall(func); } if (expression.SubQuery is TCustomSqlStatement) { expression.SubQuery.String = removevars.remove(expression.SubQuery); } if (expression.CaseExpression != null) { TCaseExpression expr = expression.CaseExpression; TExpression conditionExpr = expr.Input_expr; if (conditionExpr != null) { if (conditionExpr.SubQuery != null) { conditionExpr.SubQuery.String = removevars.remove(conditionExpr.SubQuery); } } TExpression defaultExpr = expr.Else_expr; if (defaultExpr != null) { if (defaultExpr.SubQuery != null) { defaultExpr.SubQuery.String = removevars.remove(defaultExpr.SubQuery); } } TStatementList defaultStatList = expr.Else_statement_list; if (defaultStatList != null && defaultStatList.size() > 0) { for (int i = 0; i < defaultStatList.size(); i++) { TCustomSqlStatement stmt = defaultStatList.get(i); stmt.String = removevars.remove(stmt); } } TWhenClauseItemList list = expr.WhenClauseItemList; if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { TWhenClauseItem item = list.getWhenClauseItem(i); if (item.Comparison_expr != null) { if (item.Comparison_expr.SubQuery != null) { item.Comparison_expr.SubQuery.String = removevars.remove(item.Comparison_expr.SubQuery); } } if (item.Return_expr != null) { if (item.Return_expr.SubQuery != null) { item.Return_expr.SubQuery.String = removevars.remove(item.Return_expr.SubQuery); } } TStatementList statList = expr.Else_statement_list; if (statList != null && statList.size() > 0) { for (int j = 0; j < statList.size(); j++) { TCustomSqlStatement stmt = statList.get(j); stmt.String = removevars.remove(statList.get(j)); } } } } if (expression.OperatorToken != null && string.ReferenceEquals(toExprString(expression.OperatorToken.ToString()), null)) { removeExpression(expression); } } if (expression.LeftOperand == null) { TExpression[] exprs = new TExpression[] { expression }; if (!checkCondition(exprs)) { removeExpression(expression); } } return(true); }
private void checkFunction(spInfo spInfo, TSourceTokenList tokenList) { for (int i = 0; i < tokenList.size(); i++) { TSourceToken token = tokenList.get(i); if (token.DbObjType == EDbObjectType.function) { List <TParseTreeNode> list = token.nodesStartFromThisToken; for (int j = 0; j < list.Count; j++) { TParseTreeNode node = (TParseTreeNode)list[j]; if (node is TFunctionCall) { builtInFunctionInfo function = new builtInFunctionInfo(); function.function = token.astext; function.lineNo = token.lineNo; function.columnNo = token.columnNo; TCustomSqlStatement stmt = token.stmt; if (stmt == null) { bool flag = false; for (int k = token.posinlist - 1; k >= 0; k--) { TSourceToken before = node.Gsqlparser.sourcetokenlist.get(k); if (token.nodesStartFromThisToken != null) { for (int z = 0; z < before.nodesStartFromThisToken.Count; z++) { if (before.nodesStartFromThisToken[z] is TCustomSqlStatement) { TCustomSqlStatement tempStmt = (TCustomSqlStatement)before.nodesStartFromThisToken[z]; if (tempStmt.startToken.posinlist <= token.posinlist && tempStmt.endToken.posinlist >= token.posinlist) { stmt = tempStmt; flag = true; break; } } } } if (flag) { break; } } } if (stmt is TInsertSqlStatement) { function.stmtType = usageType.Insert; } else if (stmt is TSelectSqlStatement) { function.stmtType = usageType.Read; } else if (stmt is TUpdateSqlStatement) { function.stmtType = usageType.Update; } else if (stmt is TDeleteSqlStatement) { function.stmtType = usageType.Delete; } else if (stmt is TMssqlDropTable) { function.stmtType = usageType.Drop; } else if (stmt is TDropTableSqlStatement) { function.stmtType = usageType.Drop; } else if (stmt is TMssqlExecute) { function.stmtType = usageType.Exec; } else if (stmt is TMssqlCreateProcedure) { function.stmtType = usageType.Create; } spInfo.functions.Add(function); } } } } }