<table><tr><td style="">staniek created this revision.<br />staniek added a reviewer: piggz.<br />Herald added a project: KDb.<br />Herald added a subscriber: Kexi-Devel-list.<br />staniek requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D17336">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>KDb VERSION -> 3.1.1</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Add Date/Time classes for precise type support</li>
<li class="remarkup-list-item">Add autotests for the KDb date/time classes</li>
<li class="remarkup-list-item">Add support for the Date/Time constants in the SQL parser</li>
<li class="remarkup-list-item">improve lexer too</li>
<li class="remarkup-list-item">obsolete previous approach for SQL default date support</li>
<li class="remarkup-list-item">and for SQLite, add new APIs for converting date/times</li>
</ul>

<p><a href="https://community.kde.org/Kexi/Plugins/Queries/SQL_Constants" class="remarkup-link" target="_blank" rel="noreferrer">https://community.kde.org/Kexi/Plugins/Queries/SQL_Constants</a></p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Add autotests for date/time related KDBSQL statements</li>
</ul>

<p>BUG:393094</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Precondition: Only the KDb patch needed, no changes in KEXI.</p>

<p>0. Run KDb autotests<br />
Expected: 100% passes</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">Open a new design in KEXI Query Designer.</li>
</ol>

<p>Note: Visual designer does not support these constants, use the SQL view.</p>

<ol class="remarkup-list" start="2">
<li class="remarkup-list-item">Type a number of statements involving Date, Time and Date/Time constants</li>
</ol>

<p>You can use test cases from autotests/parser/data/statements.txt, sections:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Date Constants (KDbSQL EXTENSION)</li>
<li class="remarkup-list-item">Time Constants (KDbSQL EXTENSION)</li>
<li class="remarkup-list-item">Date/Time Constants (KDbSQL EXTENSION)</li>
</ul>

<p>Use the Check Query button to try both valid and invalid constants. For example "SELECT #12:13:01#" should work and "SELECT #2018-11-37#" should be rejected as invalid constant.</p>

<p>Expected: Valid constants should be accepted and then data view should work, there should be warning for invalid constants.<br />
Expected: Saving of both valid and invalid statements should be possible in the SQL view.</p>

<ol class="remarkup-list" start="3">
<li class="remarkup-list-item">Create table with columns of type date, time and date/time and add some records.</li>
</ol>

<ol class="remarkup-list" start="4">
<li class="remarkup-list-item">Open a new design in Query SQL Designer, create statements involving both constants and columns e.g. SELECT #12:13:01# AS expr1, timecolumn FROM table where table.timecolumn < #2018-11-37#</li>
</ol>

<p>Expected: valid statement, the Data view works.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R15 KDb</div></div></div><br /><div><strong>BRANCH</strong><div><div>393094-date-constants</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D17336">https://phabricator.kde.org/D17336</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>CMakeLists.txt<br />
autotests/CMakeLists.txt<br />
autotests/DateTimeTest.cpp<br />
autotests/DateTimeTest.h<br />
autotests/ExpressionsTest.cpp<br />
autotests/parser/data/statements.txt<br />
src/CMakeLists.txt<br />
src/KDb.cpp<br />
src/KDb.h<br />
src/KDbDateTime.cpp<br />
src/KDbDateTime.h<br />
src/KDbDriver.cpp<br />
src/KDbDriver.h<br />
src/KDbField.cpp<br />
src/KDbQuerySchema.cpp<br />
src/KDb_p.h<br />
src/drivers/postgresql/PostgresqlCursor.cpp<br />
src/drivers/sqlite/SqliteCursor.cpp<br />
src/drivers/sqlite/SqlitePreparedStatement.cpp<br />
src/expression/KDbConstExpression.cpp<br />
src/parser/KDbParser.cpp<br />
src/parser/KDbParser.h<br />
src/parser/KDbSqlParser.y<br />
src/parser/KDbSqlScanner.l<br />
src/parser/generate_parser_code.sh<br />
src/parser/generated/KDbToken.cpp<br />
src/parser/generated/KDbToken.h<br />
src/parser/generated/sqlparser.cpp<br />
src/parser/generated/sqlparser.h<br />
src/parser/generated/sqlscanner.cpp<br />
src/tools/KDbUtils.cpp</div></div></div><br /><div><strong>To: </strong>staniek, piggz<br /><strong>Cc: </strong>Kexi-Devel-list, barman, wicik, staniek<br /></div>