[prev in list] [next in list] [prev in thread] [next in thread]
List: kexi-devel
Subject: D17336: Restore support for date/time constants in KEXI SQL
From: Jarosław_Staniek <noreply () phabricator ! kde ! org>
Date: 2018-12-03 16:12:59
Message-ID: 1a3577d916df26a4449856673645edc9 () localhost ! localdomain
[Download RAW message or body]
[Attachment #2 (text/plain)]
staniek created this revision.
staniek added a reviewer: piggz.
Herald added a project: KDb.
Herald added a subscriber: Kexi-Devel-list.
staniek requested review of this revision.
REVISION SUMMARY
KDb VERSION -> 3.1.1
- Add Date/Time classes for precise type support
- Add autotests for the KDb date/time classes
- Add support for the Date/Time constants in the SQL parser
- improve lexer too
- obsolete previous approach for SQL default date support
- and for SQLite, add new APIs for converting date/times
https://community.kde.org/Kexi/Plugins/Queries/SQL_Constants
- Add autotests for date/time related KDBSQL statements
BUG:393094
TEST PLAN
Precondition: Only the KDb patch needed, no changes in KEXI.
0. Run KDb autotests
Expected: 100% passes
1. Open a new design in KEXI Query Designer.
Note: Visual designer does not support these constants, use the SQL view.
2. Type a number of statements involving Date, Time and Date/Time constants
You can use test cases from autotests/parser/data/statements.txt, sections:
- Date Constants (KDbSQL EXTENSION)
- Time Constants (KDbSQL EXTENSION)
- Date/Time Constants (KDbSQL EXTENSION)
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.
Expected: Valid constants should be accepted and then data view should work, there \
should be warning for invalid constants. Expected: Saving of both valid and invalid \
statements should be possible in the SQL view.
3. Create table with columns of type date, time and date/time and add some records.
4. 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#
Expected: valid statement, the Data view works.
REPOSITORY
R15 KDb
BRANCH
393094-date-constants
REVISION DETAIL
https://phabricator.kde.org/D17336
AFFECTED FILES
CMakeLists.txt
autotests/CMakeLists.txt
autotests/DateTimeTest.cpp
autotests/DateTimeTest.h
autotests/ExpressionsTest.cpp
autotests/parser/data/statements.txt
src/CMakeLists.txt
src/KDb.cpp
src/KDb.h
src/KDbDateTime.cpp
src/KDbDateTime.h
src/KDbDriver.cpp
src/KDbDriver.h
src/KDbField.cpp
src/KDbQuerySchema.cpp
src/KDb_p.h
src/drivers/postgresql/PostgresqlCursor.cpp
src/drivers/sqlite/SqliteCursor.cpp
src/drivers/sqlite/SqlitePreparedStatement.cpp
src/expression/KDbConstExpression.cpp
src/parser/KDbParser.cpp
src/parser/KDbParser.h
src/parser/KDbSqlParser.y
src/parser/KDbSqlScanner.l
src/parser/generate_parser_code.sh
src/parser/generated/KDbToken.cpp
src/parser/generated/KDbToken.h
src/parser/generated/sqlparser.cpp
src/parser/generated/sqlparser.h
src/parser/generated/sqlscanner.cpp
src/tools/KDbUtils.cpp
To: staniek, piggz
Cc: Kexi-Devel-list, barman, wicik, staniek
[Attachment #3 (text/html)]
<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>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic