| 1587 | } |
| 1588 | |
| 1589 | static void optimize_cdb_decode(pv_name_fix_t *pv_name) |
| 1590 | { |
| 1591 | int i, j, prev_cols; |
| 1592 | char col_type1, col_type2; |
| 1593 | |
| 1594 | for (i = 0; i < pv_name->c_entry->nr_columns; i++) { |
| 1595 | if (!str_strcmp(pv_name->c_entry->columns[i], &pv_name->col)) { |
| 1596 | pv_name->col_nr = i; |
| 1597 | |
| 1598 | prev_cols = 0; |
| 1599 | col_type1 = ((pv_name->c_entry->column_types & (1LL << i)) != 0); |
| 1600 | for (j = 0; j < i; j++) { |
| 1601 | col_type2 = ((pv_name->c_entry->column_types & (1LL << j)) != 0); |
| 1602 | if (col_type1 == col_type2) |
| 1603 | prev_cols++; |
| 1604 | } |
| 1605 | if (col_type1) { |
| 1606 | pv_name->col_offset = INT_B64_ENC_LEN + |
| 1607 | pv_name->c_entry->nr_ints*INT_B64_ENC_LEN + prev_cols*INT_B64_ENC_LEN; |
| 1608 | if (prev_cols == pv_name->c_entry->nr_strs - 1) |
| 1609 | pv_name->last_str = 1; |
| 1610 | else |
| 1611 | pv_name->last_str = 0; |
| 1612 | } else |
| 1613 | pv_name->col_offset = INT_B64_ENC_LEN + prev_cols*INT_B64_ENC_LEN; |
| 1614 | |
| 1615 | break; |
| 1616 | } |
| 1617 | } |
| 1618 | if (i == pv_name->c_entry->nr_columns) |
| 1619 | pv_name->col_offset = -1; |
| 1620 | } |
| 1621 | |
| 1622 | static void unlink_from_query_list(struct queried_key *pos) |
| 1623 | { |
no outgoing calls
no test coverage detected