dictionary: Always compact immediately upon deletion of a variable.
[pspp] / src / data / dataset-writer.c
index 011deed39d3cc5ef0e9e33058766c9bd4e378808..cfaa88ab5cb1913ff20842ac435f223bf6edac0e 100644 (file)
@@ -73,14 +73,10 @@ dataset_writer_open (struct file_handle *fh,
   writer->ds = fh_get_dataset (fh);
 
   writer->dict = dict_clone (dictionary);
+  struct case_map_stage *stage = case_map_stage_create (writer->dict);
   dict_delete_scratch_vars (writer->dict);
-  if (dict_count_values (writer->dict, 0) < dict_get_n_vars (writer->dict))
-    {
-      writer->compactor = case_map_to_compact_dict (writer->dict, 0);
-      dict_compact_values (writer->dict);
-    }
-  else
-    writer->compactor = NULL;
+  writer->compactor = case_map_stage_get_case_map (stage);
+  case_map_stage_destroy (stage);
   writer->subwriter = autopaging_writer_create (dict_get_proto (writer->dict));
 
   casewriter = casewriter_create (dict_get_proto (writer->dict),