def _parse_status_vector(self): sql_code = 0 gds_codes = set() message = '' n = bytes_to_bint(self.recv_channel(4)) while n != isc_arg_end: if n == isc_arg_gds: gds_code = bytes_to_bint(self.recv_channel(4)) if gds_code: gds_codes.add(gds_code) message += messages.get(gds_code, '@1') num_arg = 0 elif n == isc_arg_number: num = bytes_to_bint(self.recv_channel(4)) if gds_code == 335544436: sql_code = num num_arg += 1 message = message.replace('@' + str(num_arg), str(num)) elif n == isc_arg_string: nbytes = bytes_to_bint(self.recv_channel(4)) s = str(self.recv_channel(nbytes, word_alignment=True)) num_arg += 1 message = message.replace('@' + str(num_arg), s) elif n == isc_arg_interpreted: nbytes = bytes_to_bint(self.recv_channel(4)) s = str(self.recv_channel(nbytes, word_alignment=True)) message += s elif n == isc_arg_sql_state: nbytes = bytes_to_bint(self.recv_channel(4)) s = str(self.recv_channel(nbytes, word_alignment=True)) n = bytes_to_bint(self.recv_channel(4)) return (gds_codes, sql_code, message)
def _parse_status_vector(self): sql_code = 0 gds_codes = set() message = '' n = bytes_to_bint(self.recv_channel(4)) while n != isc_arg_end: if n == isc_arg_gds: gds_code = bytes_to_bint(self.recv_channel(4)) if gds_code: gds_codes.add(gds_code) message += messages.get(gds_code, '@1') num_arg = 0 elif n == isc_arg_number: num = bytes_to_bint(self.recv_channel(4)) if gds_code == 335544436: sql_code = num num_arg += 1 message = message.replace('@' + str(num_arg), str(num)) elif (n == isc_arg_string or n == isc_arg_interpreted or n == isc_arg_sql_state): nbytes = bytes_to_bint(self.recv_channel(4)) s = str(self.recv_channel(nbytes, word_alignment=True)) num_arg += 1 message = message.replace('@' + str(num_arg), s) elif n == isc_arg_sql_state: nbytes = bytes_to_bint(self.recv_channel(4)) s = str(self.recv_channel(nbytes, word_alignment=True)) n = bytes_to_bint(self.recv_channel(4)) return (gds_codes, sql_code, message)
def _parse_status_vector(self): sql_code = 0 gds_codes = set() message = "" n = bytes_to_bint(recv_channel(self.sock, 4)) while n != isc_arg_end: if n == isc_arg_gds: gds_code = bytes_to_bint(recv_channel(self.sock, 4)) if gds_code: gds_codes.add(gds_code) message += messages.get(gds_code, "@1") num_arg = 0 elif n == isc_arg_number: num = bytes_to_bint(recv_channel(self.sock, 4)) if gds_code == 335544436: sql_code = num num_arg += 1 message = message.replace("@" + str(num_arg), str(num)) elif n == isc_arg_string or n == isc_arg_interpreted: nbytes = bytes_to_bint(recv_channel(self.sock, 4)) n = str(recv_channel(self.sock, nbytes, word_alignment=True)) num_arg += 1 message = message.replace("@" + str(num_arg), n) n = bytes_to_bint(recv_channel(self.sock, 4)) return (gds_codes, sql_code, message)
def _op_response(self): b = recv_channel(self.sock, 4) while bytes_to_bint(b) == self.op_dummy: b = recv_channel(self.sock, 4) if bytes_to_bint(b) != self.op_response: raise InternalError b = recv_channel(self.sock, 16) h = bytes_to_bint(b[0:4]) # Object handle oid = b[4:12] # Object ID buf_len = bytes_to_bint(b[12:]) # buffer length buf = recv_channel(self.sock, buf_len, True) # Parse status vector sql_code = 0 gds_codes = set() message = '' n = bytes_to_bint(recv_channel(self.sock, 4)) while n != isc_arg_end: if n == isc_arg_gds: gds_code = bytes_to_bint(recv_channel(self.sock, 4)) if gds_code: gds_codes.add(gds_code) message += messages.get(gds_code, '@1') num_arg = 0 elif n == isc_arg_number: num = bytes_to_bint(recv_channel(self.sock, 4)) if gds_code == 335544436: sql_code = num num_arg += 1 message = message.replace('@' + str(num_arg), str(num)) elif n == isc_arg_string or n == isc_arg_interpreted: nbytes = bytes_to_bint(recv_channel(self.sock, 4)) n = str(recv_channel(self.sock, nbytes, True)) num_arg += 1 message = message.replace('@' + str(num_arg), n) n = bytes_to_bint(recv_channel(self.sock, 4)) if sql_code or message: raise OperationalError(message, gds_codes, sql_code) return (h, oid, buf)