Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-9588

[C++] clang/win: Copy constructor of ParquetInvalidOrCorruptedFileException not correctly triggered

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.0.0
    • 2.0.0
    • C++

    Description

      The copy constructor of ParquetInvalidOrCorruptedFileException doesn't seem to be taken correctly when building with clang 9.0.1 on Windows in a MSVC toolchain.

      Adding ParquetInvalidOrCorruptedFileException(const ParquetInvalidOrCorruptedFileException&) = default; as an explicit copy constructor didn't help.

      Happy to any ideas here, probably a long shot as there are other clang-msvc problems.

      [49/62] Building CXX object src/parquet/CMakeFiles/parquet_shared.dir/Unity/unity_1_cxx.cxx.obj
      FAILED: src/parquet/CMakeFiles/parquet_shared.dir/Unity/unity_1_cxx.cxx.obj
      C:\Users\Administrator\miniconda3\conda-bld\arrow-cpp-ext_1595962790058\_build_env\Library\bin\clang++.exe  -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_S
      SE4_2 -DARROW_WITH_BROTLI -DARROW_WITH_BZ2 -DARROW_WITH_LZ4 -DARROW_WITH_SNAPPY -DARROW_WITH_TIMING_TESTS -DARROW_WITH_UTF8PROC -DARROW_WITH_ZLIB -DARROW_WITH_ZSTD -DAWS_COMMON_USE_IMPORT_EXPORT -DAWS_EVE
      NT_STREAM_USE_IMPORT_EXPORT -DAWS_SDK_VERSION_MAJOR=1 -DAWS_SDK_VERSION_MINOR=7 -DAWS_SDK_VERSION_PATCH=164 -DHAVE_INTTYPES_H -DHAVE_NETDB_H -DNOMINMAX -DPARQUET_EXPORTING -DUSE_IMPORT_EXPORT -DUSE_IMPORT
      _EXPORT=1 -DUSE_WINDOWS_DLL_SEMANTICS -D_CRT_SECURE_NO_WARNINGS -Dparquet_shared_EXPORTS -Isrc -I../src -I../src/generated -isystem ../thirdparty/flatbuffers/include -isystem C:/Users/Administrator/minico
      nda3/conda-bld/arrow-cpp-ext_1595962790058/_h_env/Library/include -isystem ../thirdparty/hadoop/include -fvisibility-inlines-hidden -std=c++14 -fmessage-length=0 -march=k8 -mtune=haswell -ftree-vectorize
      -fstack-protector-strong -O2 -ffunction-sections -pipe -D_CRT_SECURE_NO_WARNINGS -D_MT -D_DLL -nostdlib -Xclang --dependent-lib=msvcrt -fuse-ld=lld -fno-aligned-allocation -Qunused-arguments -fcolor-diagn
      ostics -O3 -DNDEBUG  -Wa,-mbig-obj -Wall -Wno-unknown-warning-option -Wno-pass-failed -msse4.2  -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt   -std=c++14 -MD -MT src/parquet/CMakeFiles/parquet
      _shared.dir/Unity/unity_1_cxx.cxx.obj -MF src\parquet\CMakeFiles\parquet_shared.dir\Unity\unity_1_cxx.cxx.obj.d -o src/parquet/CMakeFiles/parquet_shared.dir/Unity/unity_1_cxx.cxx.obj -c src/parquet/CMakeF
      iles/parquet_shared.dir/Unity/unity_1_cxx.cxx
      In file included from src/parquet/CMakeFiles/parquet_shared.dir/Unity/unity_1_cxx.cxx:3:
      In file included from C:/Users/Administrator/miniconda3/conda-bld/arrow-cpp-ext_1595962790058/work/cpp/src/parquet/column_scanner.cc:18:
      In file included from ../src\parquet/column_scanner.h:29:
      In file included from ../src\parquet/column_reader.h:25:
      In file included from ../src\parquet/exception.h:26:
      In file included from ../src\parquet/platform.h:23:
      In file included from ../src\arrow/buffer.h:28:
      In file included from ../src\arrow/status.h:25:
      ../src\arrow/util/string_builder.h:49:10: error: invalid operands to binary expression ('std::ostream' (aka 'basic_ostream<char, char_traits<char> >') and 'parquet::ParquetInvalidOrCorruptedFileException'
      )
        stream << head;
        ~~~~~~ ^  ~~~~
      ../src\arrow/util/string_builder.h:61:3: note: in instantiation of function template specialization 'arrow::util::StringBuilderRecursive<parquet::ParquetInvalidOrCorruptedFileException &>' requested here
        StringBuilderRecursive(ss.stream(), std::forward<Args>(args)...);
        ^
      ../src\arrow/status.h:160:31: note: in instantiation of function template specialization 'arrow::util::StringBuilder<parquet::ParquetInvalidOrCorruptedFileException &>' requested here
          return Status(code, util::StringBuilder(std::forward<Args>(args)...));
                                    ^
      ../src\arrow/status.h:204:20: note: in instantiation of function template specialization 'arrow::Status::FromArgs<parquet::ParquetInvalidOrCorruptedFileException &>' requested here
          return Status::FromArgs(StatusCode::Invalid, std::forward<Args>(args)...);
                         ^
      ../src\parquet/exception.h:129:49: note: in instantiation of function template specialization 'arrow::Status::Invalid<parquet::ParquetInvalidOrCorruptedFileException &>' requested here
            : ParquetStatusException(::arrow::Status::Invalid(std::forward<Args>(args)...)) {}
                                                      ^
      C:/Users/Administrator/miniconda3/conda-bld/arrow-cpp-ext_1595962790058/work/cpp/src/parquet/file_reader.cc:270:13: note: in instantiation of function template specialization 'parquet::ParquetInvalidOrCor
      ruptedFileException::ParquetInvalidOrCorruptedFileException<parquet::ParquetInvalidOrCorruptedFileException &>' requested here
            throw ParquetInvalidOrCorruptedFileException("Parquet file size is 0 bytes");
                  ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:480:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const void *' for 1st ar
      gument; take the address of the argument with &
              basic_ostream& __CLR_OR_THIS_CALL operator<<(const void *_Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:204:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'std::basic_ostream<char,
       char_traits<char> > &(*)(std::basic_ostream<char, char_traits<char> > &) __attribute__((cdecl))' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(basic_ostream& (__cdecl *_Pfn)(basic_ostream&))
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:209:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'std::basic_ostream<char,
       std::char_traits<char> >::_Myios &(*)(std::basic_ostream<char, std::char_traits<char> >::_Myios &) __attribute__((cdecl))' (aka 'basic_ios<char, std::char_traits<char> > &(*)(basic_ios<char, std::char_tr
      aits<char> > &)') for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(_Myios& (__cdecl *_Pfn)(_Myios&))
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:215:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'std::ios_base &(*)(std::
      ios_base &) __attribute__((cdecl))' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(ios_base& (__cdecl *_Pfn)(ios_base&))
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:221:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'bool' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(bool _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:241:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'short' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(short _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:275:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'unsigned short' for 1st
      argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(unsigned short _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:295:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'int' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(int _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:320:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'unsigned int' for 1st ar
      gument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(unsigned int _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:340:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'long' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(long _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:360:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'unsigned long' for 1st a
      rgument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(unsigned long _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:380:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'long long' for 1st argum
      ent
              basic_ostream& __CLR_OR_THIS_CALL operator<<(long long _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:400:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'unsigned long long' for
      1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(unsigned long long _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:420:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'float' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(float _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:440:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'double' for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(double _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:460:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'long double' for 1st arg
      ument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(long double _Val)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:508:36: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'std::basic_ostream<char,
       std::char_traits<char> >::_Mysb *' (aka 'basic_streambuf<char, std::char_traits<char> > *') for 1st argument
              basic_ostream& __CLR_OR_THIS_CALL operator<<(_Mysb *_Strbuf)
                                                ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:702:33: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const char *' f
      or 2nd argument
              basic_ostream<_Elem, _Traits>& operator<<(
                                             ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:749:33: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'char' for 2nd a
      rgument
              basic_ostream<_Elem, _Traits>& operator<<(
                                             ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:787:32: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const char *' f
      or 2nd argument
              basic_ostream<char, _Traits>& operator<<(
                                            ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:834:32: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'char' for 2nd a
      rgument
              basic_ostream<char, _Traits>& operator<<(
                                            ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:960:32: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const signed ch
      ar *' for 2nd argument
              basic_ostream<char, _Traits>& operator<<(
                                            ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:967:32: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'signed char' fo
      r 2nd argument
              basic_ostream<char, _Traits>& operator<<(
                                            ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:974:32: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const unsigned
      char *' for 2nd argument
              basic_ostream<char, _Traits>& operator<<(
                                            ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:981:32: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'unsigned char'
      for 2nd argument
              basic_ostream<char, _Traits>& operator<<(
                                            ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:1047:3: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const std::erro
      r_code' for 2nd argument
                      operator<<(basic_ostream<_Elem, _Traits>& _Ostr,
                      ^
      ../src\arrow/type.h:182:15: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const arrow::DataType' for 2nd argument
      std::ostream& operator<<(std::ostream& os, const DataType& type);
                    ^
      ../src\arrow/type.h:1046:15: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'TimeUnit::type' for 2nd argument
      std::ostream& operator<<(std::ostream& os, TimeUnit::type unit);
                    ^
      ../src\arrow/array/array_base.h:203:29: note: candidate function not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'const arrow::Array' for 2nd argument
      static inline std::ostream& operator<<(std::ostream& os, const Array& x) {
                                  ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\thread:240:27: note: candidate function template not viable: no known conversion from 'parquet::ParquetInvalidOrCorruptedFileException' to 'thread::id' for
      2nd argument
              basic_ostream<_Ch, _Tr>& operator<<(
                                       ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:921:33: note: candidate template ignored: deduced conflicting types for parameter '_Elem' ('char' vs. 'parquet::ParquetInvalidOrCorruptedFileExcepti
      on')
              basic_ostream<_Elem, _Traits>& operator<<(
                                             ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\memory:1718:33: note: candidate template ignored: could not match 'shared_ptr<type-parameter-0-2>' against 'parquet::ParquetInvalidOrCorruptedFileException'
              basic_ostream<_Elem, _Traits>& operator<<(basic_ostream<_Elem, _Traits>& _Out, const shared_ptr<_Ty>& _Px)
                                             ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\memory:2757:33: note: candidate template ignored: could not match 'unique_ptr<type-parameter-0-2, type-parameter-0-3>' against 'parquet::ParquetInvalidOrCor
      ruptedFileException'
              basic_ostream<_Elem, _Traits>& operator<<(basic_ostream<_Elem, _Traits>& _Out, const unique_ptr<_Yty, _Dx>& _Px)
                                             ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:874:33: note: candidate template ignored: could not match 'const _Elem *' against 'parquet::ParquetInvalidOrCorruptedFileException'
              basic_ostream<_Elem, _Traits>& operator<<(
                                             ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\ostream:1008:10: note: candidate template ignored: requirement 'conjunction_v<std::negation<std::is_lvalue_reference<std::basic_ostream<char, std::char_trai
      ts<char> > &> >, std::is_base_of<std::ios_base, std::basic_ostream<char, std::char_traits<char> > &>, std::_Can_stream_out<std::basic_ostream<char, std::char_traits<char> > &, parquet::ParquetInvalidOrCor
      ruptedFileException, void> >' was not satisfied [with _Ostr = std::basic_ostream<char, char_traits<char> > &, _Ty = parquet::ParquetInvalidOrCorruptedFileException]
              _Ostr&& operator<<(_Ostr&& _Os, const _Ty& _Val)
                      ^
      C:\BuildTools\VC\Tools\MSVC\14.16.27023\include\string:170:33: note: candidate template ignored: could not match 'basic_string<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2>' against 'parquet
      ::ParquetInvalidOrCorruptedFileException'
              basic_ostream<_Elem, _Traits>& operator<<(
                                             ^
      1 error generated.
      [54/62] Building CXX object src/parquet/CMakeFiles/parquet_shared.dir/Unity/unity_0_cxx.cxx.obj
      ninja: build stopped: subcommand failed.
      

      Attachments

        Issue Links

          Activity

            People

              uwe Uwe Korn
              uwe Uwe Korn
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1.5h
                  1.5h

                  Slack

                    Issue deployment