001package gudusoft.gsqlparser.nodes; 002 003 004import gudusoft.gsqlparser.ESqlClause; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006 007/** 008 * update clause in merge statement. 009 * <pre> 010 * [when matched [and search_conditions ] then update set {col_name = expression} | delete] 011 * </pre> 012 * 013 * <p> call {@link #getUpdateColumnList()} to return value for {col_name = expression} 014 * 015 * @see TMergeWhenClause 016 */ 017public class TMergeUpdateClause extends TMergeActionClause { 018 019 private TResultColumnList updateColumnList; 020 private TExpression updateWhereClause; 021 private TExpression deleteWhereClause; 022 023 public TResultColumnList getUpdateColumnList() { 024 return updateColumnList; 025 } 026 027 public TExpression getUpdateWhereClause() { 028 return updateWhereClause; 029 } 030 031 public TExpression getDeleteWhereClause() { 032 return deleteWhereClause; 033 } 034 035 public void init(Object arg1){ 036 this.mergeActionType = EMergeActionType.update; 037 this.updateColumnList = (TResultColumnList)arg1; 038 } 039 040 public void init(Object arg1,Object arg2){ 041 init(arg1); 042 this.updateWhereClause = (TExpression)arg2; 043 } 044 045 public void init(Object arg1,Object arg2,Object arg3){ 046 init(arg1); 047 if (arg2 != null){ 048 this.updateWhereClause = (TExpression)arg2; 049 } 050 if (arg3 != null){ 051 this.deleteWhereClause = (TExpression)arg3; 052 } 053 } 054 055 public void doParse(TCustomSqlStatement psql, ESqlClause plocation){ 056 if (updateColumnList != null){ 057 updateColumnList.doParse(psql,ESqlClause.set); 058 } 059 060 if (this.updateWhereClause != null){ 061 this.updateWhereClause.doParse(psql,ESqlClause.where); 062 } 063 064 if (this.deleteWhereClause != null){ 065 this.deleteWhereClause.doParse(psql,ESqlClause.unknown); 066 } 067 068 } 069 070 public void setUnSetTerms(TResultColumnList unSetTerms) { 071 this.unSetTerms = unSetTerms; 072 } 073 074 public void accept(TParseTreeVisitor v){ 075 v.preVisit(this); 076 v.postVisit(this); 077 078 } 079 080 public void acceptChildren(TParseTreeVisitor v){ 081 v.preVisit(this); 082 if (updateColumnList != null){ 083 updateColumnList.acceptChildren(v); 084 } 085 086 if (this.updateWhereClause != null){ 087 this.updateWhereClause.acceptChildren(v); 088 } 089 090 if (this.deleteWhereClause != null){ 091 this.deleteWhereClause.acceptChildren(v); 092 } 093 v.postVisit(this); 094 } 095 096 public void setUpdateColumnList(TResultColumnList updateColumnList) { 097 this.updateColumnList = updateColumnList; 098 } 099 100 public void setUpdateWhereClause(TExpression updateWhereClause) { 101 this.updateWhereClause = updateWhereClause; 102 } 103 104 public void setDeleteWhereClause(TExpression deleteWhereClause) { 105 this.deleteWhereClause = deleteWhereClause; 106 } 107 108 private TResultColumnList unSetTerms; //couchbase 109 110 public TResultColumnList getUnSetTerms() { 111 return unSetTerms; 112 } 113}