| 1080 | } |
| 1081 | |
| 1082 | string CompactionInputRowToString(const CompactionInputRow& input_row) { |
| 1083 | if (input_row.previous_ghost == nullptr) { |
| 1084 | return RowToString(input_row.row, input_row.redo_head, input_row.undo_head); |
| 1085 | } |
| 1086 | string ret = RowToString(input_row.row, input_row.redo_head, input_row.undo_head); |
| 1087 | const CompactionInputRow* previous_ghost = input_row.previous_ghost; |
| 1088 | while (previous_ghost != nullptr) { |
| 1089 | ret.append(" Previous Ghost: "); |
| 1090 | ret.append(RowToString(previous_ghost->row, |
| 1091 | previous_ghost->redo_head, |
| 1092 | previous_ghost->undo_head)); |
| 1093 | previous_ghost = previous_ghost->previous_ghost; |
| 1094 | } |
| 1095 | return ret; |
| 1096 | } |
| 1097 | |
| 1098 | //////////////////////////////////////////////////////////// |
| 1099 | |