[MDEV-21930] Rocksdb does not build with latest VS 2019 Created: 2020-03-13  Updated: 2020-04-14  Resolved: 2020-03-23

Status: Closed
Project: MariaDB Server
Component/s: Compiling, Platform Windows, Storage Engine - RocksDB
Affects Version/s: 10.2
Fix Version/s: 10.2.32, 10.3.23, 10.4.13, 10.5.3

Type: Bug Priority: Blocker
Reporter: Vladislav Vaintroub Assignee: Vladislav Vaintroub
Resolution: Fixed Votes: 0
Labels: None
Environment:

Windows, Visual Studio 16.5 Preview



 Description   

The problem is in the facebook rocksdb library that we use.

Current head of https://github.com/facebook/rocksdb builds fine.

The outdated submodule version in MariaDB source (at 10.5, revision e731f4402258554812c46334dc0d9483e6cc769b) fails.

Here is the error message

 

C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,60): error C2676: binary '[': '_RanIt' does not define this operator or a conversion to a
type acceptable to the predefined operator [C:\work\rocksdb2\rocksdb-shared.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>
]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(3494): message : see reference to function template instantiation 'void std::_Make_heap_unchec
ked<_RanIt,_Pr>(_RanIt,_RanIt,_Pr)' being compiled [C:\work\rocksdb2\rocksdb-shared.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,
_Pr=rocksdb::CompareKeyContext
]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(3506): message : see reference to function template instantiation 'void std::Sort_unchecked<
RanIt,Fn>(_RanIt,_RanIt,_int64,_Pr)' being compiled [C:\work\rocksdb2\rocksdb-shared.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,
_Fn=rocksdb::CompareKeyContext,
_Pr=rocksdb::CompareKeyContext
]
C:\work\rocksdb2\db\db_impl\db_impl.cc(1794): message : see reference to function template instantiation 'void std::sort<rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovec
tor<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,rocksdb::CompareKeyContext>(const _RanIt,const _RanIt,_Pr)' being compiled [C:\work\rocksdb2\rocksdb-shared.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,
_Pr=rocksdb::CompareKeyContext
]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,43): error C2672: 'std::move': no matching overloaded function found [C:\work\rocksdb2\ro
cksdb-shared.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,1): error C2780: '_DestTy *std::move(_InIt,_InIt,_DestTy (&)[_DestSize])': expects 3 argu
ments - 1 provided [C:\work\rocksdb2\rocksdb-shared.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\xutility(3951): message : see declaration of 'std::move' [C:\work\rocksdb2\rocksdb-shared.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,1): error C2780: '_OutIt std::move(_InIt,_InIt,_OutIt)': expects 3 arguments - 1 provided
[C:\work\rocksdb2\rocksdb-shared.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\xutility(3939): message : see declaration of 'std::move' [C:\work\rocksdb2\rocksdb-shared.vcxproj]
db_filesnapshot.cc
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,60): error C2676: binary '[': '_RanIt' does not define this operator or a conversion to a
type acceptable to the predefined operator [C:\work\rocksdb2\rocksdb.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>
]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(3494): message : see reference to function template instantiation 'void std::_Make_heap_unchec
ked<_RanIt,_Pr>(_RanIt,_RanIt,_Pr)' being compiled [C:\work\rocksdb2\rocksdb.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,
_Pr=rocksdb::CompareKeyContext
]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(3506): message : see reference to function template instantiation 'void std::Sort_unchecked<
RanIt,Fn>(_RanIt,_RanIt,_int64,_Pr)' being compiled [C:\work\rocksdb2\rocksdb.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,
_Fn=rocksdb::CompareKeyContext,
_Pr=rocksdb::CompareKeyContext
]
C:\work\rocksdb2\db\db_impl\db_impl.cc(1794): message : see reference to function template instantiation 'void std::sort<rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovec
tor<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,rocksdb::CompareKeyContext>(const _RanIt,const _RanIt,_Pr)' being compiled [C:\work\rocksdb2\rocksdb.vcxproj]
with
[
_RanIt=rocksdb::autovector<rocksdb::KeyContext *,32>::iterator_impl<rocksdb::autovector<rocksdb::KeyContext *,32>,rocksdb::KeyContext *>,
_Pr=rocksdb::CompareKeyContext
]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,43): error C2672: 'std::move': no matching overloaded function found [C:\work\rocksdb2\ro
cksdb.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,1): error C2780: '_DestTy *std::move(_InIt,_InIt,_DestTy (&)[_DestSize])': expects 3 argu
ments - 1 provided [C:\work\rocksdb2\rocksdb.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\xutility(3951): message : see declaration of 'std::move' [C:\work\rocksdb2\rocksdb.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\algorithm(2749,1): error C2780: '_OutIt std::move(_InIt,_InIt,_OutIt)': expects 3 arguments - 1 provided
[C:\work\rocksdb2\rocksdb.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.25.28610\include\xutility(3939): message : see declaration of 'std::move' [C:\work\rocksdb2\rocksdb.vcxproj]

{format}

Meaning, soon rocksdb could not be compiled on MSVC once anyone is using latest released version of it.


Generated at Thu Feb 08 09:10:55 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.