in akd_mysql/src/mysql_storables.rs [252:304]
fn get_batch_fill_temp_table<St: Storable>(num_items: Option<usize>) -> String {
let mut statement = match St::data_type() {
StorageType::Azks => "".to_string(),
StorageType::HistoryNodeState => {
format!(
"INSERT INTO `{}` (`label_len`, `label_val`, `epoch`) VALUES ",
TEMP_IDS_TABLE
)
}
StorageType::HistoryTreeNode => {
format!(
"INSERT INTO `{}` (`label_len`, `label_val`) VALUES ",
TEMP_IDS_TABLE
)
}
StorageType::ValueState => {
format!(
"INSERT INTO `{}` (`username`, `epoch`) VALUES ",
TEMP_IDS_TABLE
)
}
};
if let Some(item_count) = num_items {
for i in 0..item_count {
let append = match St::data_type() {
StorageType::Azks => String::from(""),
StorageType::HistoryNodeState => {
format!("(:label_len{}, :label_val{}, :epoch{})", i, i, i)
}
StorageType::HistoryTreeNode => {
format!("(:label_len{}, :label_val{})", i, i)
}
StorageType::ValueState => {
format!("(:username{}, :epoch{})", i, i)
}
};
statement = format!("{}{}", statement, append);
if i < item_count - 1 {
// inner-item, append a comma
statement += ", ";
}
}
} else {
statement += match St::data_type() {
StorageType::Azks => "",
StorageType::HistoryNodeState => "(:label_len, :label_val, :epoch)",
StorageType::HistoryTreeNode => "(:label_len, :label_val)",
StorageType::ValueState => "(:username, :epoch)",
};
}
statement
}