Skip to content

list<bigint> isn't supported? #67

@wyg031113

Description

@wyg031113

my schema:

{
  "columns": [
    {
      "name": "fl_data",
      "type": "list",
       "children":[{
           "name": "inner1",
           "type": "integer"
           }
       ],
      "nullability": "NULL"
    }
  ]
}

my data:

{"fl_data":[859949408964,869718110937,869747139723,846733838092,864556136080,563731900975,561404766447]}

./bin/test_main jsondata/ flout
test begin
Failed: ABORTED.
Exprsn: false
Values: [FLS] UNREACHABLE with unexpected type: std::unique_ptr<fastlanes::List, std::default_deletefastlanes::List > at ./FastLanes/src/table/rowgroup.cpp:395
./FastLanes/src/table/rowgroup.cpp:395
Aborted (core dumped)

not support up

struct finalize_visitor {
	explicit finalize_visitor() = default;

	template <typename PT>
	void operator()(up<TypedCol<PT>>& typed_column) const {
		auto& min             = typed_column->m_stats.min;
		auto& max             = typed_column->m_stats.max;
		auto& bimap_frequency = typed_column->m_stats.bimap_frequency;

		// into the dictionary
		for (n_t val_idx {0}; val_idx < typed_column->data.size(); val_idx++) {
			const auto current_val = typed_column->data[val_idx];
			if (!bimap_frequency.contains_value(current_val)) {
				n_t current_idx = bimap_frequency.size();
				bimap_frequency.insert(current_idx, {current_val});
			}

			min = std::min(min, current_val);
			max = std::max(max, current_val);
		}
	}

	void operator()(up<FLSStrColumn>& str_col) const {
		str_col->str_p_arr.resize(str_col->length_arr.size());
		len_t cur_offset = 0;
		for (idx_t val_idx {0}; val_idx < str_col->length_arr.size(); ++val_idx) {
			// set pointer into byte array
			str_col->str_p_arr[val_idx] = &str_col->byte_arr[cur_offset];

			// construct fls_string_t in‐place, no temporary
			str_col->fls_str_arr.emplace_back(&str_col->byte_arr[cur_offset], str_col->length_arr[val_idx]);

			cur_offset += str_col->length_arr[val_idx];
		}
		str_col->fsst_str_p_arr.resize(str_col->fsst_length_arr.size());
		cur_offset = 0;
		for (idx_t val_idx {0}; val_idx < str_col->fsst_length_arr.size(); ++val_idx) {
			str_col->fsst_str_p_arr[val_idx] = (&str_col->fsst_byte_arr[cur_offset]);

			cur_offset += str_col->fsst_length_arr[val_idx];
		}
	}

	void operator()(up<Struct>& struct_col) const {
		for (auto& col : struct_col->internal_rowgroup) {
			visit(finalize_visitor {}, col);
		}
	}

	void operator()(auto& col) const {
		FLS_UNREACHABLE();
	}
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions