001package gudusoft.gsqlparser.nodes; 002/* 003 * Date: 14-9-17 004 */ 005 006import gudusoft.gsqlparser.EQueryHint; 007import gudusoft.gsqlparser.nodes.*; 008 009/** 010 * <a href="http://msdn.microsoft.com/en-us/library/ms181714.aspx">SQL Server query hint</a> 011 * 012 * @see gudusoft.gsqlparser.EQueryHint 013 */ 014public class TQueryHint extends TParseTreeNode { 015 private EQueryHint queryHintType; 016 private TConstant number_rows; 017 private TConstant number_of_processors; 018 private TConstant maxrecursion_number; 019 private TObjectName exposed_object_name ; 020 private TPTNodeList <TTableHint> tableHints; 021 022 /** 023 * TABLE HINT ( exposed_object_name [ , <table_hint> [ [, ]...n ] ] ) 024 * @return table_hint list 025 * @see gudusoft.gsqlparser.nodes.TTableHint 026 */ 027 028 public TPTNodeList<TTableHint> getTableHints() { 029 return tableHints; 030 } 031 032 /** 033 * TABLE HINT ( exposed_object_name [ , <table_hint> [ [, ]...n ] ] ) 034 * @return exposed_object_name 035 */ 036 public TObjectName getExposed_object_name() { 037 return exposed_object_name; 038 } 039 040 /** 041 * MAXRECURSION number 042 * @return number 043 */ 044 public TConstant getMaxrecursion_number() { 045 return maxrecursion_number; 046 } 047 048 /** 049 * MAXDOP number_of_processors 050 * @return number_of_processors 051 */ 052 public TConstant getNumber_of_processors() { 053 return number_of_processors; 054 } 055 056 public EQueryHint getQueryHintType() { 057 return queryHintType; 058 } 059 060 public void init(Object arg1){ 061 queryHintType = (EQueryHint)arg1; 062 } 063 064 /** 065 * FAST number_rows 066 * @return number_rows 067 */ 068 public TConstant getNumber_rows() { 069 return number_rows; 070 } 071 072 public void init(Object arg1,Object arg2){ 073 init(arg1); 074 switch (queryHintType){ 075 case E_QUERY_HINT_FAST: 076 number_rows = (TConstant)arg2; 077 break; 078 case E_QUERY_HINT_MAXDOP: 079 number_of_processors = (TConstant)arg2; 080 break; 081 case E_QUERY_HINT_MAXRECURSION: 082 maxrecursion_number = (TConstant)arg2; 083 break; 084 case E_QUERY_HINT_TABLE_HINT: 085 exposed_object_name = (TObjectName)arg2; 086 break; 087 default: 088 break; 089 } 090 } 091 092 public void init(Object arg1,Object arg2,Object arg3){ 093 init(arg1,arg2); 094 tableHints = (TPTNodeList)arg3; 095 } 096 097 public void accept(TParseTreeVisitor v){ 098 v.preVisit(this); 099 v.postVisit(this); 100 } 101 102 public void acceptChildren(TParseTreeVisitor v){ 103 v.preVisit(this); 104 v.postVisit(this); 105 } 106 107 public void setQueryHintType(EQueryHint queryHintType) { 108 this.queryHintType = queryHintType; 109 } 110 111 public void setNumber_rows(TConstant number_rows) { 112 this.number_rows = number_rows; 113 } 114 115 public void setNumber_of_processors(TConstant number_of_processors) { 116 this.number_of_processors = number_of_processors; 117 } 118 119 public void setMaxrecursion_number(TConstant maxrecursion_number) { 120 this.maxrecursion_number = maxrecursion_number; 121 } 122 123 public void setExposed_object_name(TObjectName exposed_object_name) { 124 this.exposed_object_name = exposed_object_name; 125 } 126 127 public void setTableHints(TPTNodeList<TTableHint> tableHints) { 128 this.tableHints = tableHints; 129 } 130}