@@ -188,6 +188,8 @@ public void decode(ByteBuf buf, ObObj obj) {
188188 private static Map <Integer , ObTableObjType > valueMap = new HashMap <Integer , ObTableObjType >();
189189 // mapping from ObTableObjType to ObObjType
190190 private static Map <ObTableObjType , ObObjType > tableObjTypeMap = new HashMap <>();
191+ // mapping from ObObjType to ObTableObjType
192+ private static Map <ObObjType , ObTableObjType > objTableTypeMap = new HashMap <>();
191193
192194 ObTableObjType (int value ) {
193195 this .value = value ;
@@ -199,46 +201,38 @@ public void decode(ByteBuf buf, ObObj obj) {
199201 }
200202 }
201203
204+ static {
205+ objTableTypeMap .put (ObObjType .ObNullType , ObTableObjType .ObTableNullType );
206+ objTableTypeMap .put (ObObjType .ObTinyIntType , ObTableObjType .ObTableTinyIntType );
207+ objTableTypeMap .put (ObObjType .ObSmallIntType , ObTableObjType .ObTableSmallIntType );
208+ objTableTypeMap .put (ObObjType .ObInt32Type , ObTableObjType .ObTableInt32Type );
209+ objTableTypeMap .put (ObObjType .ObInt64Type , ObTableObjType .ObTableInt64Type );
210+ objTableTypeMap .put (ObObjType .ObVarcharType , ObTableObjType .ObTableVarcharType );
211+ objTableTypeMap .put (ObObjType .ObDoubleType , ObTableObjType .ObTableDoubleType );
212+ objTableTypeMap .put (ObObjType .ObFloatType , ObTableObjType .ObTableFloatType );
213+ objTableTypeMap .put (ObObjType .ObTimestampType , ObTableObjType .ObTableTimestampType );
214+ objTableTypeMap .put (ObObjType .ObDateTimeType , ObTableObjType .ObTableDateTimeType );
215+ objTableTypeMap .put (ObObjType .ObExtendType , null );
216+ objTableTypeMap .put (ObObjType .ObCharType , ObTableObjType .ObTableCharType );
217+ }
218+
202219 public static ObTableObjType getTableObjType (ObObj obj ) {
203220 ObObjType objType = obj .getMeta ().getType ();
204221 ObCollationType objCsType = obj .getMeta ().getCsType ();
205- if (objType == ObObjType .ObNullType ) {
206- // only for GET operation default value
207- return ObTableNullType ;
208- } else if (objType == ObObjType .ObTinyIntType ) {
209- return ObTableTinyIntType ;
210- } else if (objType == ObObjType .ObSmallIntType ) {
211- return ObTableObjType .ObTableSmallIntType ;
212- } else if (objType == ObObjType .ObInt32Type ) {
213- return ObTableObjType .ObTableInt32Type ;
214- } else if (objType == ObObjType .ObInt64Type ) {
215- return ObTableObjType .ObTableInt64Type ;
216- } else if (objType == ObObjType .ObVarcharType ) {
217- if (objCsType == ObCollationType .CS_TYPE_BINARY ) {
218- return ObTableObjType .ObTableVarbinaryType ;
219- } else {
220- return ObTableObjType .ObTableVarcharType ;
221- }
222- } else if (objType == ObObjType .ObDoubleType ) {
223- return ObTableObjType .ObTableDoubleType ;
224- } else if (objType == ObObjType .ObFloatType ) {
225- return ObTableObjType .ObTableFloatType ;
226- } else if (objType == ObObjType .ObTimestampType ) {
227- return ObTableObjType .ObTableTimestampType ;
228- } else if (objType == ObObjType .ObDateTimeType ) {
229- return ObTableObjType .ObTableDateTimeType ;
222+ ObTableObjType tableObjType = objTableTypeMap .get (objType );
223+ if (objType == ObObjType .ObVarcharType && objCsType == ObCollationType .CS_TYPE_BINARY ) {
224+ tableObjType = ObTableObjType .ObTableVarbinaryType ;
230225 } else if (objType == ObObjType .ObExtendType ) {
231226 if (obj .isMinObj ()) {
232- return ObTableObjType .ObTableMinType ;
227+ tableObjType = ObTableObjType .ObTableMinType ;
233228 } else if (obj .isMaxObj ()) {
234- return ObTableObjType .ObTableMaxType ;
229+ tableObjType = ObTableObjType .ObTableMaxType ;
235230 }
236- } else if (objType == ObObjType . ObCharType ) {
237- return ObTableObjType . ObTableCharType ;
231+ } else if (tableObjType == null ) {
232+ throw new IllegalArgumentException ( "Cannot get ObTableObjType, invalid ob obj type: " + objType ) ;
238233 }
239234
240- throw new IllegalArgumentException ("cannot get ObTableObjType, invalid ob obj type: "
241- + objType .getClass ().getName ());
235+ return tableObjType ;
242236 }
243237
244238 static {
0 commit comments