C: Columns: rounding column growth to ceil to avoid looping on small
values
This commit is contained in:
@ -1973,7 +1973,7 @@ int obi_enlarge_column(OBIDMS_column_p column)
|
|||||||
|
|
||||||
// Calculate the new file size
|
// Calculate the new file size
|
||||||
old_line_count = (column->header)->line_count;
|
old_line_count = (column->header)->line_count;
|
||||||
new_line_count = old_line_count * COLUMN_GROWTH_FACTOR;
|
new_line_count = ceil((double) old_line_count * (double) COLUMN_GROWTH_FACTOR);
|
||||||
|
|
||||||
if (new_line_count > MAXIMUM_LINE_COUNT)
|
if (new_line_count > MAXIMUM_LINE_COUNT)
|
||||||
{
|
{
|
||||||
@ -2381,6 +2381,54 @@ char* obi_get_elements_names(OBIDMS_column_p column)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char* obi_get_formatted_elements_names(OBIDMS_column_p column)
|
||||||
|
{
|
||||||
|
char* elements_names;
|
||||||
|
int i, j;
|
||||||
|
int elt_idx;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
elements_names = (char*) malloc(((column->header)->elements_names_length + (column->header)->nb_elements_per_line) * sizeof(char));
|
||||||
|
if (elements_names == NULL)
|
||||||
|
{
|
||||||
|
obi_set_errno(OBI_MALLOC_ERROR);
|
||||||
|
obidebug(1, "\nError allocating memory for elements names");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
j = 0;
|
||||||
|
for (i=0; i < (column->header)->nb_elements_per_line; i++)
|
||||||
|
{
|
||||||
|
elt_idx = ((column->header)->elements_names_idx)[i];
|
||||||
|
len = strlen(((column->header)->elements_names)+elt_idx);
|
||||||
|
memcpy(elements_names+j, ((column->header)->elements_names)+elt_idx, len*sizeof(char));
|
||||||
|
j = j + len;
|
||||||
|
elements_names[j] = ';';
|
||||||
|
j++;
|
||||||
|
elements_names[j] = ' ';
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
|
||||||
|
elements_names[j - 1] = '\0';
|
||||||
|
|
||||||
|
return elements_names;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char* obi_column_formatted_infos(OBIDMS_column_p column)
|
||||||
|
{
|
||||||
|
char* column_infos;
|
||||||
|
char* elt_names;
|
||||||
|
|
||||||
|
column_infos = malloc(1024 * sizeof(char));
|
||||||
|
|
||||||
|
elt_names = obi_get_formatted_elements_names(column);
|
||||||
|
|
||||||
|
|
||||||
|
free(elt_names);
|
||||||
|
return column_infos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int obi_column_prepare_to_set_value(OBIDMS_column_p column, index_t line_nb, index_t elt_idx)
|
int obi_column_prepare_to_set_value(OBIDMS_column_p column, index_t line_nb, index_t elt_idx)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user