Skip to content

Conversation

@kaka11chen
Copy link
Contributor

Proposed changes

backport #35347

Further comments

If this is a relatively large or complex change, kick off the discussion at dev@doris.apache.org by explaining why you chose the solution you did and what alternatives you considered, etc...

…on fields inserted into the target table are inconsistent with the field order of the query source table and the schema field order of the query source table. (apache#35347)

Fix partition column orders issue when the partition fields inserted
into the target table are inconsistent with the field order of the query
source table and the schema field order of the query source table.

Please look at
`regression-test/suites/external_table_p0/hive/ddl/test_hive_write_type.groovy`
in the PR.
@doris-robot
Copy link

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR

Since 2024-03-18, the Document has been moved to doris-website.
See Doris Document.

@yiguolei yiguolei merged commit 84e9a14 into apache:branch-2.1 May 28, 2024
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clang-tidy made some suggestions

return Status::OK();
}

Status VHiveTableWriter::write(vectorized::Block& block) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: function 'write' has cognitive complexity of 83 (threshold 50) [readability-function-cognitive-complexity]

Status VHiveTableWriter::write(vectorized::Block& block) {
                         ^
Additional context

be/src/vec/sink/writer/vhive_table_writer.cpp:86: +1, including nesting penalty of 0, nesting level increased to 1

    if (block.rows() == 0) {
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:90: +1, including nesting penalty of 0, nesting level increased to 1

    RETURN_IF_ERROR(vectorized::VExprContext::get_output_block_after_execute_exprs(
    ^

be/src/common/status.h:612: expanded from macro 'RETURN_IF_ERROR'

    do {                                \
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:90: +2, including nesting penalty of 1, nesting level increased to 2

    RETURN_IF_ERROR(vectorized::VExprContext::get_output_block_after_execute_exprs(
    ^

be/src/common/status.h:614: expanded from macro 'RETURN_IF_ERROR'

        if (UNLIKELY(!_status_.ok())) { \
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:98: +1, including nesting penalty of 0, nesting level increased to 1

    if (_partition_columns_input_index.empty()) {
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:103: +2, including nesting penalty of 1, nesting level increased to 2

            if (writer_iter == _partitions_to_writers.end()) {
            ^

be/src/vec/sink/writer/vhive_table_writer.cpp:106: +3, including nesting penalty of 2, nesting level increased to 3

                } catch (doris::Exception& e) {
                  ^

be/src/vec/sink/writer/vhive_table_writer.cpp:110: +3, including nesting penalty of 2, nesting level increased to 3

                RETURN_IF_ERROR(writer->open(_state, _profile));
                ^

be/src/common/status.h:612: expanded from macro 'RETURN_IF_ERROR'

    do {                                \
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:110: +4, including nesting penalty of 3, nesting level increased to 4

                RETURN_IF_ERROR(writer->open(_state, _profile));
                ^

be/src/common/status.h:614: expanded from macro 'RETURN_IF_ERROR'

        if (UNLIKELY(!_status_.ok())) { \
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:111: +1, nesting level increased to 2

            } else {
              ^

be/src/vec/sink/writer/vhive_table_writer.cpp:112: +3, including nesting penalty of 2, nesting level increased to 3

                if (writer_iter->second->written_len() > config::hive_sink_max_file_size) {
                ^

be/src/vec/sink/writer/vhive_table_writer.cpp:123: +4, including nesting penalty of 3, nesting level increased to 4

                    } catch (doris::Exception& e) {
                      ^

be/src/vec/sink/writer/vhive_table_writer.cpp:127: +4, including nesting penalty of 3, nesting level increased to 4

                    RETURN_IF_ERROR(writer->open(_state, _profile));
                    ^

be/src/common/status.h:612: expanded from macro 'RETURN_IF_ERROR'

    do {                                \
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:127: +5, including nesting penalty of 4, nesting level increased to 5

                    RETURN_IF_ERROR(writer->open(_state, _profile));
                    ^

be/src/common/status.h:614: expanded from macro 'RETURN_IF_ERROR'

        if (UNLIKELY(!_status_.ok())) { \
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:128: +1, nesting level increased to 3

                } else {
                  ^

be/src/vec/sink/writer/vhive_table_writer.cpp:135: +2, including nesting penalty of 1, nesting level increased to 2

        RETURN_IF_ERROR(writer->write(output_block));
        ^

be/src/common/status.h:612: expanded from macro 'RETURN_IF_ERROR'

    do {                                \
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:135: +3, including nesting penalty of 2, nesting level increased to 3

        RETURN_IF_ERROR(writer->write(output_block));
        ^

be/src/common/status.h:614: expanded from macro 'RETURN_IF_ERROR'

        if (UNLIKELY(!_status_.ok())) { \
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:141: +1, including nesting penalty of 0, nesting level increased to 1

        for (int i = 0; i < output_block.rows(); ++i) {
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:145: +2, including nesting penalty of 1, nesting level increased to 2

            } catch (doris::Exception& e) {
              ^

be/src/vec/sink/writer/vhive_table_writer.cpp:152: nesting level increased to 2

                    [&](const std::string& partition_name, int position,
                    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:158: +3, including nesting penalty of 2, nesting level increased to 3

                    RETURN_IF_ERROR(writer->open(_state, _profile));
                    ^

be/src/common/status.h:612: expanded from macro 'RETURN_IF_ERROR'

    do {                                \
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:158: +4, including nesting penalty of 3, nesting level increased to 4

                    RETURN_IF_ERROR(writer->open(_state, _profile));
                    ^

be/src/common/status.h:614: expanded from macro 'RETURN_IF_ERROR'

        if (UNLIKELY(!_status_.ok())) { \
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:164: +3, including nesting penalty of 2, nesting level increased to 3

                } catch (doris::Exception& e) {
                  ^

be/src/vec/sink/writer/vhive_table_writer.cpp:171: +2, including nesting penalty of 1, nesting level increased to 2

            if (writer_iter == _partitions_to_writers.end()) {
            ^

be/src/vec/sink/writer/vhive_table_writer.cpp:173: +3, including nesting penalty of 2, nesting level increased to 3

                if (_partitions_to_writers.size() + 1 >
                ^

be/src/vec/sink/writer/vhive_table_writer.cpp:179: +3, including nesting penalty of 2, nesting level increased to 3

                RETURN_IF_ERROR(create_and_open_writer(partition_name, i, nullptr, 0, writer));
                ^

be/src/common/status.h:612: expanded from macro 'RETURN_IF_ERROR'

    do {                                \
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:179: +4, including nesting penalty of 3, nesting level increased to 4

                RETURN_IF_ERROR(create_and_open_writer(partition_name, i, nullptr, 0, writer));
                ^

be/src/common/status.h:614: expanded from macro 'RETURN_IF_ERROR'

        if (UNLIKELY(!_status_.ok())) { \
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:180: +1, nesting level increased to 2

            } else {
              ^

be/src/vec/sink/writer/vhive_table_writer.cpp:182: +3, including nesting penalty of 2, nesting level increased to 3

                if (writer_iter->second->written_len() > config::hive_sink_max_file_size) {
                ^

be/src/vec/sink/writer/vhive_table_writer.cpp:191: +4, including nesting penalty of 3, nesting level increased to 4

                    RETURN_IF_ERROR(create_and_open_writer(partition_name, i, &file_name,
                    ^

be/src/common/status.h:612: expanded from macro 'RETURN_IF_ERROR'

    do {                                \
    ^

be/src/vec/sink/writer/vhive_table_writer.cpp:191: +5, including nesting penalty of 4, nesting level increased to 5

                    RETURN_IF_ERROR(create_and_open_writer(partition_name, i, &file_name,
                    ^

be/src/common/status.h:614: expanded from macro 'RETURN_IF_ERROR'

        if (UNLIKELY(!_status_.ok())) { \
        ^

be/src/vec/sink/writer/vhive_table_writer.cpp:193: +1, nesting level increased to 3

                } else {
                  ^

be/src/vec/sink/writer/vhive_table_writer.cpp:197: +3, including nesting penalty of 2, nesting level increased to 3

                if (writer_pos_iter == writer_positions.end()) {
                ^

be/src/vec/sink/writer/vhive_table_writer.cpp:201: +1, nesting level increased to 3

                } else {
                  ^


#pragma once

#include <gen_cpp/DataSinks_types.h>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: 'gen_cpp/DataSinks_types.h' file not found [clang-diagnostic-error]

#include <gen_cpp/DataSinks_types.h>
         ^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants