|
打印出一条记录的函数printRow
- public final void printRow(int row_offset,boolean deleted)
- {
- int zero = 0xff;
- int pos = 0;
- record_buffer.delete(0,record_buffer.length());
- // The first byte is record flag
- // The second byte is trans slot id
- // The third is the column count
- int field_count = (int)(zero & _block_buf[row_offset+2]);
- int row_length = 0;
- pos = row_offset+3;
- // Skip Cluster Key Byte
- if (getTableCount()>1)
- pos ++;
- if ((ROW_LAST_PIECE & _block_buf[row_offset]) != ROW_LAST_PIECE ||
- (ROW_CONTINUE_NEXT & _block_buf[row_offset]) == ROW_CONTINUE_NEXT)
- {
- pos = pos + 6;
- }
- for (int i=0;i<field_count;i++)
- {
- row_length = (int)(zero & _block_buf[pos]);
- pos = pos + 1;
- if (i > 0)
- record_buffer.append(",");
- if (row_length == 0xff) //Middle null column
- {
- //_output_file.print(0);
- }
- else if (row_length == 0xfe) // Field > 254 bytes
- {
- row_length = (zero & _block_buf[pos]) +
- ((zero & _block_buf[pos + 1]) << 8);
- pos = pos + 2;
- if (_column_type == null || i >= _column_type.length)
- record_buffer.append(convertRAW(_block_buf,pos,row_length));
- else
- {
- switch(_column_type[i])
- {
- case ORACLE_VARCHAR2:
- case ORACLE_VARCHAR:
- case ORACLE_LONG:
- record_buffer.append(convertVARCHAR(_block_buf,pos,row_length));
- break;
- case ORACLE_CHAR:
- record_buffer.append(convertCHAR(_block_buf,pos,row_length));
- break;
- case ORACLE_NUMBER:
- record_buffer.append(convertNUMBER(_block_buf,pos,row_length));
- break;
- case ORACLE_DATE:
- record_buffer.append(convertDATE(_block_buf,pos,row_length));
- break;
- default:
- record_buffer.append(convertRAW(_block_buf,pos,row_length));
- break;
- }
- }
- pos = pos + row_length;
- }
- else // Field < 254 bytes
- {
- if (_column_type == null || i >= _column_type.length)
- record_buffer.append(convertRAW(_block_buf,pos,row_length));
- else
- {
- switch(_column_type[i])
- {
- case ORACLE_VARCHAR2:
- case ORACLE_VARCHAR:
- case ORACLE_LONG:
- record_buffer.append(convertVARCHAR(_block_buf,pos,row_length));
- break;
- case ORACLE_CHAR:
- record_buffer.append(convertCHAR(_block_buf,pos,row_length));
- break;
- case ORACLE_NUMBER:
- record_buffer.append(convertNUMBER(_block_buf,pos,row_length));
- break;
- case ORACLE_DATE:
- record_buffer.append(convertDATE(_block_buf,pos,row_length));
- break;
- default:
- record_buffer.append(convertRAW(_block_buf,pos,row_length));
- break;
- }
- }
- pos = pos + row_length;
- }
- }
- if ((ROW_LAST_PIECE & _block_buf[row_offset]) == ROW_LAST_PIECE)
- _output_file.println(record_buffer.toString());
- else
- {
- _output_file.print(record_buffer.toString());
- }
- }
复制代码 |
|