* Refactoring of CAST FORMAT
Move CAST FORMAT logic to separate file.
Separation of logic into parsing stage and execution stage.
Add more FORMAT validation based on SQL standard.
* Add more unit tests for incorrect FORMAT
* Remove incorrect const specifier
* Fixes after review
Minor code changes.
Move public CVT_FORMAT functions to CvtFormat.h.
Add new error message if same is used pattern twice in string to datetime conversion.
* Fix indents in comments
* Add new files to windows build
* Remove constexpr specifier from functions that is not real constexpr
Because std::isdigit and std::isalpha are not constexpr.
---------
Co-authored-by: Artyom Ivanov <artyom.ivanov@red-soft.ru>
* Use current TimeStamp for data in stringToDate conversion if it's not specify
Also fix RM pattern and change (A/P)M to (A/P).M.
* Add more tests
* Add TimeStamp validation
Also move duplicated code to functions.
* Add more unit tests for "YY" and "YYY" patterns
* Use Callback for getting current date
It's better because we can mock Callback for unit tests.
* Fix exception and README description
* Add ability to print blr_cast_format
* Put a comment about new BLR in the right place
* Add information about behavior of string to datetime conversion
* Rework old patterns and add new ones
Add A.M, P.M., RR and RRRR patterns.
Rework YY, YYY, HH and HH12 patterns due to new patterns.
Add restriction from SQL standard to format.
Fix incorrect error message for mismatched pattern.
Fix bug with 0 hours in HH12.
* Add more unit tests
* Update doc for cast format
* Allow specification of log_level for BOOST_TESTS in make
* Change enum class to enum in namespace
* Switch from plain enum to constexpr values
---------
Co-authored-by: Artyom Ivanov <artyom.ivanov@red-soft.ru>
* Surface internal optimization modes (all rows vs first rows) at the SQL and configuration levels.
* Add session-level control over the optimization strategy
* More informative name as suggested by Adriano
* Cost-based approach for the first-rows optimization mode