code: def select(
      self,
      db_name: str,
      table_name: str,
      select_list,
      search_expr,
      where_expr,
      group_by_list,
      limit_expr,
      offset_expr,
  ):
      return self.client.Select(
          SelectRequest(
              session_id=self.session_id,
              db_name=db_name,
              table_name=table_name,
              select_list=select_list,
              search_expr=search_expr,
              where_expr=where_expr,
              group_by_list=group_by_list,
              limit_expr=limit_expr,
              offset_expr=offset_expr,
          )
      )
  
imports: from infinity.remote_thrift.infinity_thrift_rpc import *
  from infinity.remote_thrift.infinity_thrift_rpc.ttypes import *
  from thrift.protocol import TBinaryProtocol
  from thrift.transport import TSocket
  from infinity import URI
label_desc: Use image node_id 16 for calling the ThriftInfinityClient obj's underlying member method code with example usage: obj.select(db_name, table_name, select_list, search_expr, where_expr, group_by_list, limit_expr, offset_expr) and returns: self