[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 -&gt; 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 \
&quot;SELECT #12:13:01#&quot; should work and &quot;SELECT #2018-11-37#&quot; 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 &lt; #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