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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions