You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Changed windows kotlin configuration to build with MSVC v145 by default.
Removed dependency pin for old protobuf version (blue no longer requires the version pin)
Changed cmake presets to use v145 by default.
Updated versions of microsoft/vcpkg & carbonengine/vcpkg-registry submodules to latest
Code Changes
returning an int 0 from a PyObject* type function is now a compilation error, these have been replaced with nullptr returns.
typedefs have been replaced with using, however this was just a matter of taste, using X = Y is more modern, and easier to read (in my humble opinion 🙇) than typedef Y X
db was using an old stdext class hash_set this has been removed from the latest version of the MSVC toolchain, and so needed to be replaced. It's been replaced with a standard unordered_set.
Replacing hash_set with unordered_set required exposing the hash function for InternalStoreElement, so that it could be used in functor templates struct std::hash<WStringStoreElement>, std::hash<ByteStoreElement> & std::hash<StringStoreElement>.
Note
There seems to be a bug, both in the old & new versions of the code, where if you try to insert a >64 bytes string into the store that has an identical first 64 bytes as a different string already inside the string store, the store will treat it as an identical string, and the string store will not store both strings. This may not be a bug if DB stringStore does not support strings longer than 64 bytes. If for say the store is only responsible for column names for example🤷.
This requires more investigation, but this v145 upgrade work does not affect this bug
There seems to be a bug, both in the old & new versions of the code, where if you try to insert a >64 bytes string into the store that has an identical first 64 bytes as a different string already inside the string store, the store will treat it as an identical string, and the string store will not store both strings. This may not be a bug if DB stringStore does not support strings longer than 64 bytes. If for say the store is only responsible for column names for example🤷.
I don't think there is a bug. The hash function only decides which bucket an element should be inserted into, not whether an element already exists in the set. As per cppreference.com:
Internally, the elements are not sorted in any particular order, but organized into buckets. Which bucket an element is placed into depends entirely on the hash of its value. This allows fast access to individual elements, since once a hash is computed, it refers to the exact bucket the element is placed into.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Configuration Changes
Code Changes
0from aPyObject*type function is now a compilation error, these have been replaced withnullptrreturns.typedefs have been replaced withusing, however this was just a matter of taste,using X = Yis more modern, and easier to read (in my humble opinion 🙇) thantypedef Y Xhash_setthis has been removed from the latest version of the MSVC toolchain, and so needed to be replaced. It's been replaced with a standardunordered_set.hash_setwithunordered_setrequired exposing the hash function forInternalStoreElement, so that it could be used in functor templatesstruct std::hash<WStringStoreElement>,std::hash<ByteStoreElement>&std::hash<StringStoreElement>.Note
There seems to be a bug, both in the old & new versions of the code, where if you try to insert a >64 bytes string into the store that has an identical first 64 bytes as a different string already inside the string store, the store will treat it as an identical string, and the string store will not store both strings. This may not be a bug if DB stringStore does not support strings longer than 64 bytes. If for say the store is only responsible for column names for example🤷.
This requires more investigation, but this v145 upgrade work does not affect this bug