Skip to content

Commit 24c3f28

Browse files
Refactor column tracking in Schema
Column tracking refers to how temporary columns for a column are tracked. This changes the tracking to use a single vector, the first element is the original column name and subsequent ones are temporary columns.
1 parent 33682db commit 24c3f28

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

src/schema.rs

+12-15
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,15 @@ impl TableChanges {
100100
#[derive(Debug)]
101101
pub struct ColumnChanges {
102102
current_name: String,
103-
original_name: String,
104-
intermediate_names: Vec<String>,
103+
backing_columns: Vec<String>,
105104
removed: bool,
106105
}
107106

108107
impl ColumnChanges {
109108
fn new(name: String) -> Self {
110109
Self {
111110
current_name: name.to_string(),
112-
original_name: name.to_string(),
113-
intermediate_names: Vec::new(),
111+
backing_columns: vec![name.to_string()],
114112
removed: false,
115113
}
116114
}
@@ -120,17 +118,17 @@ impl ColumnChanges {
120118
}
121119

122120
pub fn set_column(&mut self, column_name: &str) {
123-
self.intermediate_names.push(column_name.to_string())
121+
self.backing_columns.push(column_name.to_string())
124122
}
125123

126124
pub fn set_removed(&mut self) {
127125
self.removed = true;
128126
}
129127

130128
fn real_name(&self) -> &str {
131-
self.intermediate_names
129+
self.backing_columns
132130
.last()
133-
.unwrap_or_else(|| &self.original_name)
131+
.expect("backing_columns should never be empty")
134132
}
135133
}
136134

@@ -235,14 +233,13 @@ impl Schema {
235233
);
236234
}
237235

238-
if !column_changes.intermediate_names.is_empty() {
239-
ignore_columns.insert(column_changes.original_name.to_string());
236+
let (_, rest) = column_changes
237+
.backing_columns
238+
.split_last()
239+
.expect("backing_columns should never be empty");
240240

241-
let non_used_intermediate = &column_changes.intermediate_names
242-
[..column_changes.intermediate_names.len() - 1];
243-
for intermediate in non_used_intermediate {
244-
ignore_columns.insert(intermediate.to_string());
245-
}
241+
for column in rest {
242+
ignore_columns.insert(column.to_string());
246243
}
247244
}
248245
}
@@ -274,7 +271,7 @@ impl Schema {
274271
let table = Table {
275272
name: current_table_name.to_string(),
276273
real_name: real_table_name.to_string(),
277-
columns: columns,
274+
columns,
278275
};
279276

280277
Ok(table)

0 commit comments

Comments
 (0)