summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorPierre <prrvchr@gmail.com>2023-08-20 00:22:58 +0200
committerJulien Nabet <serval2412@yahoo.fr>2023-08-31 20:28:50 +0200
commit5b205d2b3946acd79dcb8f5abed88a0bd8afaef4 (patch)
tree55badba18028c1c0735022f6505529b6f0b0e1de /connectivity
parentcd57d3c5743ca4ed4cf59eaabaee551c085d430c (diff)
tdf#156816 Base handles scale on SQL type TIME as with TIMESTAMP
Generally import new DataType identification constants from OpenJDK's java.sql.Types Use same values for compatibility. Change-Id: I6e3eb986dc34e8a5e2af75669363177785ff56e5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155866 Reviewed-by: Lionel Mamane <lionel@mamane.lu> Tested-by: Julien Nabet <serval2412@yahoo.fr>
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/commontools/dbtools2.cxx29
-rw-r--r--connectivity/source/commontools/formattedcolumnvalue.cxx2
2 files changed, 21 insertions, 10 deletions
diff --git a/connectivity/source/commontools/dbtools2.cxx b/connectivity/source/commontools/dbtools2.cxx
index 2cee15cd7f6a..fc533d0ff024 100644
--- a/connectivity/source/commontools/dbtools2.cxx
+++ b/connectivity/source/commontools/dbtools2.cxx
@@ -127,30 +127,39 @@ OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const
if ( (nPrecision > 0 || nScale > 0) && bUseLiteral )
{
- sal_Int32 nParenPos = sTypeName.indexOf('(');
+ bool bTimed = (nDataType == DataType::TIME ||
+ nDataType == DataType::TIME_WITH_TIMEZONE ||
+ nDataType == DataType::TIMESTAMP ||
+ nDataType == DataType::TIMESTAMP_WITH_TIMEZONE);
+
+ sal_Int32 nParenPos = (nDataType == DataType::TIME_WITH_TIMEZONE ||
+ nDataType == DataType::TIMESTAMP_WITH_TIMEZONE) ?
+ sTypeName.indexOf(' ') :
+ sTypeName.indexOf('(');
+
if ( nParenPos == -1 )
- {
- aSql.append(sTypeName + "(");
- }
+ aSql.append(sTypeName);
else
- {
- aSql.append(sTypeName.subView(0, ++nParenPos));
- }
+ aSql.append(sTypeName.subView(0, nParenPos));
+ aSql.append("(");
- if ( nPrecision > 0 && nDataType != DataType::TIMESTAMP )
+ if ( nPrecision > 0 && !bTimed )
{
aSql.append(nPrecision);
if ( (nScale > 0) || (!_sCreatePattern.empty() && sCreateParams.indexOf(_sCreatePattern) != -1) )
aSql.append(",");
}
- if ( (nScale > 0) || ( !_sCreatePattern.empty() && sCreateParams.indexOf(_sCreatePattern) != -1 ) || nDataType == DataType::TIMESTAMP )
+ if ( (nScale > 0) || ( !_sCreatePattern.empty() && sCreateParams.indexOf(_sCreatePattern) != -1 ) || bTimed )
aSql.append(nScale);
if ( nParenPos == -1 )
aSql.append(")");
else
{
- nParenPos = sTypeName.indexOf(')',nParenPos);
+ if ( bTimed )
+ aSql.append(")");
+ else
+ nParenPos = sTypeName.indexOf(')',nParenPos);
aSql.append(sTypeName.subView(nParenPos));
}
}
diff --git a/connectivity/source/commontools/formattedcolumnvalue.cxx b/connectivity/source/commontools/formattedcolumnvalue.cxx
index 621bc9acf59b..a389236e6aa0 100644
--- a/connectivity/source/commontools/formattedcolumnvalue.cxx
+++ b/connectivity/source/commontools/formattedcolumnvalue.cxx
@@ -126,7 +126,9 @@ namespace dbtools
{
case DataType::DATE:
case DataType::TIME:
+ case DataType::TIME_WITH_TIMEZONE:
case DataType::TIMESTAMP:
+ case DataType::TIMESTAMP_WITH_TIMEZONE:
case DataType::BIT:
case DataType::BOOLEAN:
case DataType::TINYINT: