Example #1
0
void ZipIntKeyIndex::save(PathRef path) const {
	auto fpath = path + ".zint";
	NativeDataOutput<FileStream> dio;
	dio.open(fpath.string().c_str(), "wb");
	Header h;
	h.rows     = m_index.size();
	h.keyBits  = m_keys.uintbits();
	h.keyType  = uint8_t(m_keyType);
	h.isUnique = m_isUnique;
	h.padding  = 0;
	h.minKey   = m_minKey;
	dio.ensureWrite(&h, sizeof(h));
	dio.ensureWrite(m_keys .data(), m_keys .mem_size());
	dio.ensureWrite(m_index.data(), m_index.mem_size());
}
Example #2
0
void MockReadonlyIndex::save(PathRef fpath) const {
	FileStream fp(fpath.string().c_str(), "wb");
	fp.disbuf();
	NativeDataOutput<OutputBuffer> dio; dio.attach(&fp);
	size_t rows = m_ids.size();
	dio << uint64_t(m_fixedLen);
	dio << uint64_t(rows);
	dio << uint64_t(m_keys.strpool.size());
	dio.ensureWrite(m_ids.data(), m_ids.used_mem_size());
	if (m_fixedLen) {
		assert(m_keys.size() == 0);
		assert(m_keys.strpool.size() == m_fixedLen * rows);
	} else {
		assert(m_keys.size() == rows);
		dio.ensureWrite(m_keys.offsets.data(), m_keys.offsets.used_mem_size());
	}
	dio.ensureWrite(m_keys.strpool.data(), m_keys.strpool.used_mem_size());
}
Example #3
0
void MockReadonlyStore::save(PathRef path) const {
	std::string fpath = path.string() + ".mock";
	FileStream fp(fpath.c_str(), "wb");
	fp.disbuf();
	NativeDataOutput<OutputBuffer> dio; dio.attach(&fp);
	size_t rows = m_fixedLen ? m_rows.strpool.size() / m_fixedLen : m_rows.size();
	dio << uint64_t(m_fixedLen);
	dio << uint64_t(rows);
	dio << uint64_t(m_rows.strpool.size());
	if (0 == m_fixedLen) {
	#if !defined(NDEBUG)
		assert(m_rows.strpool.size() == m_rows.offsets.back());
		for (size_t i = 0; i < rows; ++i) {
			assert(m_rows.offsets[i] < m_rows.offsets[i+1]);
		}
	#endif
		dio.ensureWrite(m_rows.offsets.data(), m_rows.offsets.used_mem_size());
	} else {
		assert(m_rows.strpool.size() % m_fixedLen == 0);
	}
	dio.ensureWrite(m_rows.strpool.data(), m_rows.strpool.used_mem_size());
}