Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New ANY, SEMI, ANTI JOIN (HashJoin only) #7665

Merged
merged 19 commits into from Dec 5, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions dbms/src/Columns/ColumnDecimal.h
Expand Up @@ -96,6 +96,7 @@ class ColumnDecimal final : public COWHelper<ColumnVectorHelper, ColumnDecimal<T
void insertFrom(const IColumn & src, size_t n) override { data.push_back(static_cast<const Self &>(src).getData()[n]); }
void insertData(const char * pos, size_t /*length*/) override;
void insertDefault() override { data.push_back(T()); }
virtual void insertManyDefaults(size_t length) override { data.resize_fill(data.size() + length); }
void insert(const Field & x) override { data.push_back(DB::get<NearestFieldType<T>>(x)); }
void insertRangeFrom(const IColumn & src, size_t start, size_t length) override;

Expand Down
5 changes: 5 additions & 0 deletions dbms/src/Columns/ColumnFixedString.h
Expand Up @@ -92,6 +92,11 @@ class ColumnFixedString final : public COWHelper<ColumnVectorHelper, ColumnFixed
chars.resize_fill(chars.size() + n);
}

virtual void insertManyDefaults(size_t length) override
{
chars.resize_fill(chars.size() + n * length);
}

void popBack(size_t elems) override
{
chars.resize_assume_reserved(chars.size() - n * elems);
Expand Down
7 changes: 7 additions & 0 deletions dbms/src/Columns/ColumnString.h
Expand Up @@ -205,6 +205,13 @@ class ColumnString final : public COWHelper<IColumn, ColumnString>
offsets.push_back(offsets.back() + 1);
}

virtual void insertManyDefaults(size_t length) override
{
chars.resize_fill(chars.size() + length);
for (size_t i = 0; i < length; ++i)
offsets.push_back(offsets.back() + 1);
}

int compareAt(size_t n, size_t m, const IColumn & rhs_, int /*nan_direction_hint*/) const override
{
const ColumnString & rhs = assert_cast<const ColumnString &>(rhs_);
Expand Down
5 changes: 5 additions & 0 deletions dbms/src/Columns/ColumnVector.h
Expand Up @@ -144,6 +144,11 @@ class ColumnVector final : public COWHelper<ColumnVectorHelper, ColumnVector<T>>
data.push_back(T());
}

virtual void insertManyDefaults(size_t length) override
{
data.resize_fill(data.size() + length, T());
}

void popBack(size_t n) override
{
data.resize_assume_reserved(data.size() - n);
Expand Down