sql.properties 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  1. # Licensed Materials - Property of IBM
  2. # IBM Cognos Products: OQP
  3. # (C) Copyright IBM Corp. 2005, 2022
  4. # US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM corp.
  5. # This properties file contains default configuration attributes for all
  6. # relational data sources. Any data source that is different must override
  7. # the value in their own properties file.
  8. #
  9. # The #define values in comments are the values used by UDA to initialize
  10. # their dbInfo data structure. We are using this as a starting point for
  11. # the XQE default values. At some point these can be removed from this file.
  12. #
  13. # Function parameter types are defined using the following domains/types:
  14. #
  15. # domain types
  16. # ------ -----
  17. # any any data type. Use with care!
  18. # binary binary
  19. # blob blob, clob
  20. # boolean boolean
  21. # collection row, array, multiset
  22. # datetime date, time, time_with_time_zone, timestamp, timestamp_with_time_zone
  23. # interval_day_time interval_day, interval_day_to_hour, interval_day_to_minute, interval_day_to_second
  24. # interval_hour, interval_hour_to_minute, interval_hour_to_second
  25. # interval_minute, interval_minute_to_second
  26. # interval_second
  27. # interval_year_month interval_year, interval_year_to_month
  28. # interval_month
  29. # numeric decimal, double, float, integer, levelNumber, long, smallint
  30. # exact decimal, integer, levelNumber, long, smallint
  31. # text businessKey, char, currencyCode, dimensionUniqueName, externalBuffer,
  32. # hierarchyUniqueName, levelLabel, levelUniqueName, memberCaption,
  33. # memberDescription, memberRollup, memberUniqueName, nchar, nvarchar,
  34. # parentUniqueName, queryItemModelID, string, varchar, xml
  35. # variant variant
  36. #
  37. # The natural function overloads are listed herein, but with empty patterns
  38. # to act as a reference when creating overrides in DB specific properties files.
  39. #
  40. # Product information.
  41. #
  42. product.name=
  43. #
  44. # Delimiters.
  45. #
  46. delimiters.catalogDelimiter=
  47. delimiters.schemaDelimiter=
  48. delimiters.tableDelimiter=
  49. delimiters.columnDelimiter=
  50. delimiters.identifierQuoteString=
  51. delimiters.searchStringEscape=
  52. delimiters.catalogSeparator=
  53. delimiters.literalQuoteEscape=
  54. delimiters.commentBegin=/*
  55. delimiters.commentEnd=*/
  56. #
  57. # Keywords.
  58. #
  59. keywords.columnAlias=AS
  60. #
  61. # Various limits. A value of 0 means no limit, or the limit is unknown.
  62. #
  63. limits.maxBinaryLiteralLength=0
  64. limits.maxCharLiteralLength=0
  65. limits.maxColumnNameLength=0
  66. limits.maxColumnsInGroupBy=0
  67. limits.maxColumnsInIndex=0
  68. limits.maxColumnsInOrderBy=0
  69. limits.maxColumnsInSelect=0
  70. limits.maxColumnsInTable=0
  71. limits.maxConnections=0
  72. limits.maxCursorNameLength=0
  73. limits.maxIndexLength=0
  74. limits.maxSchemaNameLength=0
  75. limits.maxProcedureNameLength=0
  76. limits.maxCatalogNameLength=0
  77. limits.maxRowSize=0
  78. limits.maxStatementLength=0
  79. limits.maxStatements=0
  80. limits.maxTableNameLength=0
  81. limits.maxTablesInSelect=0
  82. limits.maxUserNameLength=0
  83. limits.defaultTransactionIsolation=0
  84. limits.maxLengthInClause=0
  85. limits.castClobToVarcharMaxSize=1024
  86. limits.maxDecimalPrecision=31
  87. #
  88. # General settings.
  89. #
  90. general.nullsAreSortedHigh=false
  91. general.nullsAreSortedLow=false
  92. general.nullsAreSortedAtStart=false
  93. general.nullsAreSortedAtEnd=false
  94. general.nullsOrdering=true
  95. general.nullsOrderingInWindowSpecification=true
  96. #
  97. # Cursor options - appended to end of generated SELECT statement.
  98. general.cursorOptions=
  99. #
  100. # RTC 61393
  101. # Indicates whether to set nulls ok indicator to true when processing JDBC result set metadata.
  102. # This is set to true only if the value returned by invoking java.sql.ResultSetMetadata.isNullable() is
  103. # possibly incorrect.
  104. #
  105. general.forceNullsOk=false
  106. #
  107. # Override sampling policy with a different one.
  108. # 1. tablesample accepting values such as BERNOULLI or SYSTEM
  109. # 2. rowsample accepting values such as NTH or RANDOM
  110. #
  111. sampling.tablesample=BERNOULLI
  112. sampling.rowsample=NTH
  113. #
  114. # Various features.
  115. #
  116. supports.duplicateColumnsInSelectList=true
  117. supports.duplicateColumnNamesInSelectList=true
  118. supports.columnAliasing=true
  119. supports.tableCorrelationNames=true
  120. supports.expressionsInOrderBy=true
  121. supports.expressionsInOrderByOnGroupedQuery=true
  122. supports.distinct.WindowAggregation=true
  123. # Determines whether the expression should be built off of the FID
  124. # of the table expression (true), or the expression of the underlying
  125. # projection that the FID refers to (false)
  126. supports.aliasInOrderByExpression=true
  127. supports.expressionsInINPredicate=true
  128. supports.expressionsInSelectList=true
  129. supports.literalsInSelectList=true
  130. supports.expressionsInLikePattern=true
  131. supports.booleanExpressionsInSelectList=true
  132. supports.fieldsOfComplexTypeInSelectList=true
  133. supports.likeEscapeClause=true
  134. supports.outerJoins=true
  135. supports.fullOuterJoins=true
  136. supports.limitedOuterJoins=false
  137. supports.subqueriesInComparisons=true
  138. supports.subqueriesInExists=true
  139. supports.subqueriesInIns=true
  140. supports.subqueriesInQuantifieds=true
  141. supports.subqueriesInCase=true
  142. supports.subqueriesInAggregate=true
  143. supports.subqueriesInGroupBy=true
  144. supports.correlatedSubqueries=true
  145. supports.correlatedSubqueriesInSelectList=true
  146. supports.correlatedSubqueriesInIns=true
  147. supports.transactions=true
  148. supports.withClauseInDerivedTable=true
  149. supports.nestedWithClause=true
  150. supports.integerDivision=true
  151. supports.nestedOlap=false
  152. supports.groupedWindowedTables=true
  153. supports.derivedColumnLists=true
  154. supports.orderByAlias=true
  155. supports.orderByName=true
  156. supports.orderByOrdinal=true
  157. supports.groupByAlias=false
  158. supports.blobsInGroupBy=false
  159. supports.blobsInOrderBy=false
  160. supports.scalarSubqueries=true
  161. supports.emptyStringIsNull=false
  162. supports.concatNullIsNull=true
  163. supports.sqlserverWindowBehaviour=false
  164. supports.mixedCaseIdentifiers=false
  165. supports.mixedCaseQuotedIdentifiers=false
  166. supports.charLiteralRoundTrip=true
  167. supports.expressionsInGroupBy=true
  168. supports.equiJoins=true
  169. supports.thetaJoins=true
  170. supports.stitchJoins=true
  171. supports.crossProducts=true
  172. supports.rewriteImplicitCrossJoins=false
  173. supports.recursiveWithClause=true
  174. supports.storedProcedureColumnUnique=true
  175. supports.implicitTypeConversion=true
  176. supports.orderByUnrelated=true
  177. supports.groupByUnrelated=true
  178. supports.schemasInDataManipulation=true
  179. #classic stack compatibility
  180. supports.nonStandardDatetimeComparison=false
  181. supports.multipleDistinctAggregates=true
  182. supports.hints=true
  183. supports.rowNumberNoOrderBy=false
  184. supports.parameterMarkers=true
  185. supports.constantsInWindows=true
  186. supports.orderByInDerivedTable=true
  187. supports.callProcedureInDerivedTable=true
  188. #join condition
  189. supports.join.betweenInOnClause=true
  190. supports.join.inPredicateInOnClause=true
  191. supports.join.isNullInOnClause=true
  192. supports.join.likeInOnClause=true
  193. supports.join.notInOnClause=true
  194. supports.join.orInOnClause=true
  195. supports.join.subqueriesInOnClause=true
  196. supports.join.onlyEquiWithAnd=false
  197. supports.join.inner.limitedThetaJoins=false
  198. supports.join.outer.thetaJoins=true
  199. supports.join.full.thetaJoins=true
  200. supports.join.full.distinctJoins=true
  201. supports.castClobToVarcharWithoutSubstring=false
  202. #isolation level support
  203. supports.isolationLevelReadUncommitted=true
  204. supports.isolationLevelReadCommitted=true
  205. supports.isolationLevelRepeatableRead=true
  206. supports.isolationLevelSerializable=true
  207. supports.constantsInCount=true
  208. supports.columnFiltersOnly=false
  209. supports.hanaInputParameters=false
  210. supports.top.distinct=true
  211. supports.top.set=true
  212. supports.top.0=true
  213. #casting with formatting pattern support
  214. supports.formatters.string_to_date=true
  215. supports.formatters.string_to_time=true
  216. supports.formatters.string_to_time_with_time_zone=true
  217. supports.formatters.string_to_timestamp=true
  218. supports.formatters.string_to_timestamp_with_time_zone=true
  219. #preparedstatement
  220. supports.preparedstatement=true
  221. # APAR 121556
  222. # If true, the db connection associated with a request is no longer
  223. # reuseable for subsequent requests. For certain dbs, this happens
  224. # after a cancel request is sent to the db.
  225. supports.connectionDroppedOnCancel=false
  226. #
  227. # Performance properties (force certain transformations to be applied).
  228. #
  229. performance.convertGroupByToDistinct=false
  230. performance.convertHavingToWhere=false
  231. performance.convertDistinctToGroupBy=false
  232. performance.transitiveClosure=false
  233. performance.predicatePushdown=false
  234. performance.semiJoin=false
  235. # RTC 377496
  236. # Set this entry to F to avoid generation of predicates of the form
  237. # T1.C1 = T2.C1 OR ( T1.C1 IS NULL AND T2.C1 IS NULL ). Care must be
  238. # taken, however, since doing so may cause data integrity problems if
  239. # data contains null values.
  240. performance.generateEqualOrNull=true
  241. #
  242. # Command.
  243. #
  244. commands.Select=SELECT
  245. commands.Call=CALL
  246. #
  247. # Tables.
  248. #
  249. tables.derived=true
  250. tables.lateral.derived=true
  251. tables.joined=true
  252. #
  253. # Constructors.
  254. #
  255. constructors.table=true
  256. constructors.row=true
  257. constructors.array=true
  258. constructors.period=true
  259. constructors.map=true
  260. #
  261. # Constructors - context overrides.
  262. #
  263. constructors.row.between=true
  264. constructors.row.comparison=true
  265. constructors.row.in=true
  266. constructors.row.isDistinctFrom=true
  267. constructors.row.simpleCase=true
  268. #DB2 supports table value constructor in IN clause, but not row expression list.
  269. constructors.row.inListToTable=false
  270. #
  271. # Clauses.
  272. #
  273. clauses.From=FROM
  274. clauses.Where=WHERE
  275. clauses.GroupBy=GROUP BY
  276. clauses.Having=HAVING
  277. clauses.With=WITH
  278. clauses.WithRecursive=WITH RECURSIVE
  279. clauses.OrderBy=ORDER BY
  280. clauses.Distinct=DISTINCT
  281. clauses.Top=FETCH FIRST %1$s ROWS ONLY
  282. clauses.Top.Position=standard
  283. clauses.At=AT
  284. clauses.Window=WINDOW
  285. clauses.TableSampleBeforeAlias=false
  286. clauses.TableSampleSystem=TABLESAMPLE SYSTEM (%1$s)@2[ REPEATABLE (%2$s)]
  287. clauses.TableSampleBernoulli=TABLESAMPLE BERNOULLI (%1$s)@2[ REPEATABLE (%2$s)]
  288. clauses.ForSystemTimeAsOf=FOR SYSTEM_TIME AS OF %1$s
  289. clauses.ForSystemTimeFrom=FOR SYSTEM_TIME FROM %1$s TO %2$s
  290. clauses.ForSystemTimeBetween=FOR SYSTEM_TIME BETWEEN %1$s AND %2$s
  291. #
  292. # Joins.
  293. #
  294. joins.Cross=%1$s CROSS JOIN %2$s
  295. joins.Inner=%1$s INNER JOIN %2$s ON %3$s
  296. joins.LeftOuter=%1$s LEFT OUTER JOIN %2$s ON %3$s
  297. joins.RightOuter=%1$s RIGHT OUTER JOIN %2$s ON %3$s
  298. joins.FullOuter=%1$s FULL OUTER JOIN %2$s ON %3$s
  299. joins.RightNested=%1$s
  300. # Bracket inner join groups in order to avoid parsing error
  301. # A LOJ
  302. # B INNER JOIN C ON B.x = C.x
  303. # ON A.x = B.x
  304. # is converted to:
  305. # A LOJ
  306. # (B INNER JOIN C ON B.x = C.x)
  307. # ON A.x = B.x
  308. #
  309. joins.BracketInner=false
  310. #
  311. # Set operators.
  312. #
  313. operators.set.Union=%1$s UNION %2$s
  314. operators.set.Union.all=%1$s UNION ALL %2$s
  315. operators.set.Intersect=%1$s INTERSECT %2$s
  316. operators.set.Intersect.all=%1$s INTERSECT ALL %2$s
  317. operators.set.Except=%1$s EXCEPT %2$s
  318. operators.set.Except.all=%1$s EXCEPT ALL %2$s
  319. #
  320. # Logical operators.
  321. #
  322. operators.logical.And=%1$s AND %2$s
  323. operators.logical.Or=%1$s OR %2$s
  324. operators.logical.Not=NOT ( %1$s )
  325. operators.logical.Is=( %1$s ) IS %2$s
  326. operators.logical.IsNot=( %1$s ) IS NOT %2$s
  327. operators.logical.IsJson=( %1$s ) IS JSON
  328. operators.logical.IsNotJson=( %1$s ) IS NOT JSON
  329. #
  330. # Arithmetic operators.
  331. #
  332. operators.arithmetic.Add[any,any]=%1$s + %2$s
  333. operators.arithmetic.Subtract[any,any]=%1$s - %2$s
  334. operators.arithmetic.Multiply[any,any]=%1$s * %2$s
  335. operators.arithmetic.Divide[any,any]=%1$s / %2$s
  336. operators.arithmetic.Negate[any]=-%1$s
  337. operators.arithmetic.UnaryPlus[any]=+%1$s
  338. operators.arithmetic.Concat[any,any]=%1$s || %2$s
  339. #
  340. # Group By Operators
  341. #
  342. operators.groupBy.Rollup=ROLLUP
  343. operators.groupBy.Cube=CUBE
  344. operators.groupBy.GroupingSets=GROUPING SETS
  345. #
  346. # Comparison predicates.
  347. #
  348. predicates.comparison.LessThan[any,any]=%1$s < %2$s
  349. predicates.comparison.LessThanOrEquals[any,any]=%1$s <= %2$s
  350. predicates.comparison.Equals[any,any]=%1$s = %2$s
  351. predicates.comparison.NotEquals[any,any]=%1$s <> %2$s
  352. predicates.comparison.GreaterThan[any,any]=%1$s > %2$s
  353. predicates.comparison.GreaterThanOrEquals[any,any]=%1$s >= %2$s
  354. #
  355. # Various predicates.
  356. #
  357. predicates.Between[any,any,any]=%1$s BETWEEN %2$s AND %3$s
  358. predicates.In[any,any]=%1$s IN ( %2$s )
  359. predicates.Overlaps[any,any,any,any]=(%1$s, %2$s) OVERLAPS (%3$s, %4$s)
  360. predicates.IsNull=%1$s IS NULL
  361. predicates.IsNotNull=%1$s IS NOT NULL
  362. predicates.Like=%1$s LIKE %2$s
  363. predicates.Like.escape=%1$s LIKE %2$s ESCAPE %3$s
  364. predicates.LikeRegex=%1$s LIKE_REGEX %2$s
  365. predicates.LikeRegex.flag=%1$s LIKE_REGEX %2$s FLAG %3$s
  366. predicates.Similar=%1$s SIMILAR TO %2$s
  367. predicates.Similar.escape=%1$s SIMILAR TO %2$s ESCAPE %3$s
  368. predicates.Exists=EXISTS %1$s
  369. predicates.All=ALL %1$s
  370. predicates.Any=ANY %1$s
  371. predicates.Some=SOME %1$s
  372. predicates.IsDistinctFrom[any,any]=%1$s IS DISTINCT FROM %2$s
  373. predicates.IsNotDistinctFrom[any,any]=%1$s IS NOT DISTINCT FROM %2$s
  374. #
  375. # Period predicates.
  376. #
  377. predicates.PeriodOverlaps[any,any]=%1$s OVERLAPS %2$s
  378. predicates.PeriodEquals[any,any]=%1$s EQUALS %2$s
  379. predicates.PeriodContains[any,any]=%1$s CONTAINS %2$s
  380. predicates.PeriodPrecedes[any,any]=%1$s PRECEDES %2$s
  381. predicates.PeriodSucceeds[any,any]=%1$s SUCCEEDS %2$s
  382. predicates.PeriodImmediatelyPrecedes[any,any]=%1$s IMMEDIATELY PRECEDES %2$s
  383. predicates.PeriodImmediatelySucceeds[any,any]=%1$s IMMEDIATELY SUCCEEDS %2$s
  384. #
  385. # Expressions.
  386. #
  387. expressions.SearchedCase=CASE
  388. expressions.SimpleCase=CASE
  389. # NULLIF(%1$s, %2$s) is equivalent to CASE WHEN %1$s = %2$s THEN NULL ELSE %1$s END
  390. expressions.NullIf=NULLIF(%1$s, %2$s)
  391. expressions.Coalesce=COALESCE(%1$s)
  392. expressions.SearchedCase.compatibleResults=true
  393. # Minimum number of arguments for Coalesce function.
  394. expressions.Coalesce.minArgs=1
  395. #
  396. # Cast expression.
  397. #
  398. expressions.Cast[any,any]=CAST(%1$s AS %2$s)
  399. expressions.Cast[any,any,any]=CAST(%1$s AS %2$s %5$s)
  400. #
  401. # Extract expression.
  402. #
  403. expressions.Extract.YEAR[any]=EXTRACT(YEAR FROM %1$s)
  404. expressions.Extract.MONTH[any]=EXTRACT(MONTH FROM %1$s)
  405. expressions.Extract.DAY[any]=EXTRACT(DAY FROM %1$s)
  406. expressions.Extract.HOUR[any]=EXTRACT(HOUR FROM %1$s)
  407. expressions.Extract.MINUTE[any]=EXTRACT(MINUTE FROM %1$s)
  408. expressions.Extract.SECOND[any]=EXTRACT(SECOND FROM %1$s)
  409. expressions.Extract.TIMEZONE_HOUR[any]=EXTRACT(TIMEZONE_HOUR FROM %1$s)
  410. expressions.Extract.TIMEZONE_MINUTE[any]=EXTRACT(TIMEZONE_MINUTE FROM %1$s)
  411. expressions.Extract.EPOCH[any]=EXTRACT(EPOCH FROM %1$s)
  412. #
  413. # Trim expression.
  414. #
  415. expressions.Trim.BOTH[any]=TRIM(BOTH FROM %1$s)
  416. expressions.Trim.LEADING[any]=TRIM(LEADING FROM %1$s)
  417. expressions.Trim.TRAILING[any]=TRIM(TRAILING FROM %1$s)
  418. expressions.Trim.BOTH[any,any]=TRIM(BOTH %1$s FROM %2$s)
  419. expressions.Trim.LEADING[any,any]=TRIM(LEADING %1$s FROM %2$s)
  420. expressions.Trim.TRAILING[any,any]=TRIM(TRAILING %1$s FROM %2$s)
  421. #
  422. # Windowed aggregates (SQL/OLAP).
  423. #
  424. olap.Max[any]=MAX(%1$s)
  425. olap.Min[any]=MIN(%1$s)
  426. olap.Sum[any]=SUM(%1$s)
  427. olap.Avg[any]=AVG(%1$s)
  428. olap.Count[any]=COUNT(%1$s)
  429. olap.CountStar[]=COUNT(*)
  430. olap.StdDevSamp[any]=STDDEV_SAMP(%1$s)
  431. olap.StdDevPop[any]=STDDEV_POP(%1$s)
  432. olap.VarSamp[any]=VAR_SAMP(%1$s)
  433. olap.VarPop[any]=VAR_POP(%1$s)
  434. olap.Rank[]=RANK()
  435. olap.DenseRank[]=DENSE_RANK()
  436. olap.PercentRank[]=PERCENT_RANK()
  437. olap.CumeDist[]=CUME_DIST()
  438. olap.PercentileCont[any,any]=PERCENTILE_CONT(%1$s) WITHIN GROUP (ORDER BY %2$s)
  439. olap.PercentileDisc[any,any]=PERCENTILE_DISC(%1$s) WITHIN GROUP (ORDER BY %2$s)
  440. olap.Median[any]=MEDIAN(%1$s)
  441. olap.RowNumber[]=ROW_NUMBER()
  442. olap.FirstValue[any]=FIRST_VALUE(%1$s)
  443. olap.LastValue[any]=LAST_VALUE(%1$s)
  444. olap.NTile[any]=NTILE(%1$s)
  445. olap.Tertile[]=TERTILE()
  446. olap.RatioToReport[any]=RATIO_TO_REPORT(%1$s)
  447. olap.Difference[any]=DIFFERENCE(%1$s)
  448. olap.Lag[any]=LAG(%1$s)
  449. olap.Lag[any,any]=LAG(%1$s, %2$s)
  450. olap.Lag[any,any,any]=LAG(%1$s, %2$s, %3$s)
  451. olap.Lag[any,any,any,any]=LAG(%1$s, %2$s, %3$s) %4$s
  452. olap.Lead[any]=LEAD(%1$s)
  453. olap.Lead[any,any]=LEAD(%1$s, %2$s)
  454. olap.Lead[any,any,any]=LEAD(%1$s, %2$s, %3$s)
  455. olap.Lead[any,any,any,any]=LEAD(%1$s, %2$s, %3$s) %4$s
  456. olap.NthValue[any,any]=NTH_VALUE(%1$s, %2$s)
  457. olap.NthValue[any,any,any]=NTH_VALUE(%1$s, %2$s) %3$s
  458. olap.NthValue[any,any,any,any]=NTH_VALUE(%1$s, %2$s) %3$s %4$s
  459. olap.Collect[any]=COLLECT(%1$s)
  460. #
  461. # Window clause.
  462. #
  463. olap.Window=OVER(%1$s)
  464. olap.PartitionBy=PARTITION BY %1$s
  465. olap.OrderBy=ORDER BY %1$s
  466. #
  467. # Window specification
  468. # A list of windows specifications that are supported by the DB
  469. # P = PARTITION BY
  470. # O = ORDER BY
  471. # F = FRAME
  472. # These settings are NOT consulted for the following functions:
  473. # RANK, DENSE_RANK, PERCENT_RANK, LAG, LEAD, NTILE and ROW_NUMBER.
  474. #
  475. olap.Window.Specification[POF]=true
  476. olap.Window.Specification[PO]=true
  477. olap.Window.Specification[OF]=true
  478. olap.Window.Specification[PF]=true
  479. olap.Window.Specification[P]=true
  480. olap.Window.Specification[O]=true
  481. olap.Window.Specification[F]=true
  482. olap.Window.Specification[]=true
  483. olap.Window.Frame.Moving=true
  484. #
  485. # Olap (distinct).
  486. #
  487. olap.Max.distinct[any]=MAX(DISTINCT %1$s)
  488. olap.Min.distinct[any]=MIN(DISTINCT %1$s)
  489. olap.Sum.distinct[any]=SUM(DISTINCT %1$s)
  490. olap.Avg.distinct[any]=AVG(DISTINCT %1$s)
  491. olap.Count.distinct[any]=COUNT(DISTINCT %1$s)
  492. #
  493. # Aggregates.
  494. #
  495. aggregates.Max[any]=MAX(%1$s)
  496. aggregates.Min[any]=MIN(%1$s)
  497. aggregates.Sum[any]=SUM(%1$s)
  498. aggregates.Avg[any]=AVG(%1$s)
  499. aggregates.Count[any]=COUNT(%1$s)
  500. aggregates.CountStar[]=COUNT(*)
  501. aggregates.StdDevSamp[any]=STDDEV_SAMP(%1$s)
  502. aggregates.StdDevPop[any]=STDDEV_POP(%1$s)
  503. aggregates.VarSamp[any]=VAR_SAMP(%1$s)
  504. aggregates.VarPop[any]=VAR_POP(%1$s)
  505. aggregates.Rank[any,any]=RANK(%1$s) WITHIN GROUP (ORDER BY %2$s)
  506. aggregates.DenseRank[any,any]=DENSE_RANK(%1$s) WITHIN GROUP (ORDER BY %2$s)
  507. aggregates.PercentRank[any,any]=PERCENT_RANK(%1$s) WITHIN GROUP (ORDER BY %2$s)
  508. aggregates.CumeDistH[any,any]=CUME_DIST(%1$s) WITHIN GROUP (ORDER BY %2$s)
  509. aggregates.PercentileCont[any,any]=PERCENTILE_CONT(%1$s) WITHIN GROUP (ORDER BY %2$s)
  510. aggregates.PercentileDisc[any,any]=PERCENTILE_DISC(%1$s) WITHIN GROUP (ORDER BY %2$s)
  511. aggregates.Median[any]=MEDIAN(%1$s)
  512. aggregates.XMLAgg=XMLAGG(%1$s@2[ ORDER BY %2$s])
  513. aggregates.Grouping[any]=GROUPING(%1$s)
  514. aggregates.ArrayAgg[any]=ARRAY_AGG(%1$s)
  515. aggregates.ArrayAgg[any,any]=ARRAY_AGG(%1$s ORDER BY %2$s)
  516. aggregates.Collect[any]=COLLECT(%1$s)
  517. aggregates.ApproxCountDistinct[any]=APPROX_COUNT_DISTINCT(%1$s)
  518. #
  519. # Aggregates (distinct).
  520. #
  521. aggregates.Max.distinct[any]=MAX(DISTINCT %1$s)
  522. aggregates.Min.distinct[any]=MIN(DISTINCT %1$s)
  523. aggregates.Sum.distinct[any]=SUM(DISTINCT %1$s)
  524. aggregates.Avg.distinct[any]=AVG(DISTINCT %1$s)
  525. aggregates.Count.distinct[any]=COUNT(DISTINCT %1$s)
  526. #
  527. # Linear regression aggregates.
  528. #
  529. aggregates.Corr[any,any]=CORR(%1$s, %2$s)
  530. aggregates.CovarPop[any,any]=COVAR_POP(%1$s, %2$s)
  531. aggregates.CovarSamp[any,any]=COVAR_SAMP(%1$s, %2$s)
  532. aggregates.RegrAvgX[any,any]=REGR_AVGX(%1$s, %2$s)
  533. aggregates.RegrAvgY[any,any]=REGR_AVGY(%1$s, %2$s)
  534. aggregates.RegrCount[any,any]=REGR_COUNT(%1$s, %2$s)
  535. aggregates.RegrIntercept[any,any]=REGR_INTERCEPT(%1$s, %2$s)
  536. aggregates.RegrR2[any,any]=REGR_R2(%1$s, %2$s)
  537. aggregates.RegrSlope[any,any]=REGR_SLOPE(%1$s, %2$s)
  538. aggregates.RegrSXX[any,any]=REGR_SXX(%1$s, %2$s)
  539. aggregates.RegrSXY[any,any]=REGR_SXY(%1$s, %2$s)
  540. aggregates.RegrSYY[any,any]=REGR_SYY(%1$s, %2$s)
  541. #
  542. # JSON aggregates.
  543. #
  544. aggregates.JSONArrayAgg=JSON_ARRAYAGG(%1$s@2[ ORDER BY %1$s])
  545. aggregates.JSONObjectAgg=JSON_OBJECTAGG(%1$s, %2$s@3[ ORDER BY %3$s]])
  546. #
  547. # Character scalar functions.
  548. #
  549. functions.CharLength[any]=CHAR_LENGTH(%1$s)
  550. functions.OctetLength[any]=OCTET_LENGTH(%1$s)
  551. functions.BitLength[any]=BIT_LENGTH(%1$s)
  552. functions.Upper[any]=UPPER(%1$s)
  553. functions.Lower[any]=LOWER(%1$s)
  554. functions.Substring[any,any]=SUBSTRING(%1$s FROM %2$s)
  555. functions.Substring[any,any,any]=SUBSTRING(%1$s FROM %2$s FOR %3$s)
  556. functions.Position[any,any]=POSITION(%1$s IN %2$s)
  557. functions.Index[any,any]=INDEX(%1$s, %2$s)
  558. functions.Ascii[any]=
  559. functions.Translate[any,any]=TRANSLATE(%1$s USING %2$s)
  560. functions.Normalize[any]=NORMALIZE(%1$s)
  561. functions.Normalize[any,any]=NORMALIZE(%1$s, %2$s)
  562. functions.Normalize[any,any,any]=NORMALIZE(%1$s, %2$s, %3$s)
  563. #Substring function to negative START value to parse the input string from its rightmost end.
  564. #It's not a standard SQL function, so leave the definition empty.
  565. functions.SubstringR[any,any]=
  566. functions.SubstringR[any,any,any]=
  567. #
  568. # Regular expression functions.
  569. #
  570. functions.SubstringRegex[any,any,any,any,any]=SUBSTRING_REGEX(%1$s@5[ FLAG %5$s] IN %2$s@3[ FROM %3$s]@4[ OCCURRENCE %4$s])
  571. functions.OccurrencesRegex[any,any,any,any]=OCCURRENCES_REGEX(%1$s@4[ FLAG %4$s] IN %2$s@3[ FROM %3$s])
  572. functions.PositionRegex[any,any,any,any,any,any]=POSITION_REGEX(@1[%1$s ]%2$s@6[ FLAG %6$s] IN %3$s@4[ FROM %4$s]@5[ OCCURRENCE %5$s])
  573. #
  574. # Numeric scalar functions.
  575. #
  576. functions.Abs[any]=ABS(%1$s)
  577. functions.Ceiling[any]=CEILING(%1$s)
  578. functions.Exp[any]=EXP(%1$s)
  579. functions.Floor[any]=FLOOR(%1$s)
  580. functions.Ln[any]=LN(%1$s)
  581. functions.Log10[any]=LOG10(%1$s)
  582. functions.Mod[any,any]=MOD(%1$s, %2$s)
  583. functions.Power[any,any]=POWER(%1$s, %2$s)
  584. functions.Random[]=RANDOM()
  585. functions.Random[any]=RANDOM(%1$s)
  586. functions.Round[any]=ROUND(%1$s)
  587. functions.Round[any,any]=ROUND(%1$s, %2$s)
  588. functions.Round[any,any,any]=ROUND(%1$s, %2$s, %3$s)
  589. functions.Sign[any]=SIGN(%1$s)
  590. functions.Sqrt[any]=SQRT(%1$s)
  591. functions.WidthBucket[any,any,any,any]=WIDTH_BUCKET(%1$s, %2$s, %3$s, %4$s)
  592. #
  593. # Array scalar functions.
  594. #
  595. functions.Cardinality[any]=CARDINALITY(%1$s)
  596. functions.TrimArray[any,any]=TRIM_ARRAY(%1$s, %2$s)
  597. #
  598. # Trigonometric functions.
  599. #
  600. functions.Arccos[any]=ACOS(%1$s)
  601. functions.Arcsin[any]=ASIN(%1$s)
  602. functions.Arctan[any]=ATAN(%1$s)
  603. functions.Cos[any]=COS(%1$s)
  604. functions.Coshyp[any]=COSH(%1$s)
  605. functions.Sin[any]=SIN(%1$s)
  606. functions.Sinhyp[any]=SINH(%1$s)
  607. functions.Tan[any]=TAN(%1$s)
  608. functions.Tanhyp[any]=TANH(%1$s)
  609. #
  610. # Datetime value functions.
  611. #
  612. functions.CurrentDate[]=CURRENT_DATE
  613. functions.CurrentTime[]=CURRENT_TIME
  614. functions.CurrentTimestamp[]=CURRENT_TIMESTAMP
  615. functions.LocalTime[]=LOCALTIME
  616. functions.LocalTimestamp[]=LOCALTIMESTAMP
  617. functions.CurrentTime[numeric]=CURRENT_TIME(%1$s)
  618. functions.CurrentTimestamp[numeric]=CURRENT_TIMESTAMP(%1$s)
  619. functions.LocalTime[numeric]=LOCALTIME(%1$s)
  620. functions.LocalTimestamp[numeric]=LOCALTIMESTAMP(%1$s)
  621. #
  622. # XML functions.
  623. #
  624. functions.XMLAttributes=XMLATTRIBUTES(%1$s)
  625. functions.XMLComment=XMLCOMMENT(%1$s)
  626. functions.XMLConcat=XMLCONCAT(%1$s)
  627. functions.XMLDocument=XMLDOCUMENT(%1$s)
  628. functions.XMLElement=XMLELEMENT(NAME %1$s@2[, %2$s]@3[, %3$s]@5[, %5$s]@4[ OPTION %4$s])
  629. functions.XMLExists=XMLEXISTS(%1$s@2[ PASSING %2$s])
  630. functions.XMLForest=XMLFOREST(@1[%1$s, ]%2$s)
  631. functions.XMLParse=XMLPARSE(%1$s %2$s %3$s)
  632. functions.XMLPI=XMLPI(NAME %1$s@2[, %2$s])
  633. functions.XMLNamespaces=XMLNAMESPACES(%1$s)
  634. functions.XMLQuery=XMLQUERY(%1$s@3[ PASSING %3$s] %2$s)
  635. functions.XMLSerialize=XMLSERIALIZE(%1$s %2$s AS %3$s)
  636. functions.XMLTable=XMLTABLE(@1[$1%s ]%2$s, %3$s %4$s)
  637. functions.XMLText=XMLTEXT(%1$s)
  638. functions.XMLTransform=XMLTRANSFORM(%1$s, %2$s)
  639. functions.XMLValidate=XMLVALIDATE(%1$s)
  640. functions.XMLElement.ContentOption.NULL_ON_NULL=true
  641. functions.XMLElement.ContentOption.EMPTY_ON_NULL=true
  642. functions.XMLForest.ContentOption.NULL_ON_NULL=true
  643. functions.XMLForest.ContentOption.EMPTY_ON_NULL=true
  644. functions.XMLParse.DocumentOrContent.DOCUMENT=true
  645. functions.XMLParse.DocumentOrContent.CONTENT=true
  646. functions.XMLParse.WhitespaceOption.STRIP_WHITESPACE=true
  647. functions.XMLParse.WhitespaceOption.PRESERVE_WHITESPACE=true
  648. functions.XMLQuery.EmptyHandlingOption.NULL_ON_EMPTY=true
  649. functions.XMLQuery.EmptyHandlingOption.EMPTY_ON_EMPTY=true
  650. functions.XMLSerialize.DeclarationOption.INCLUDING_XMLDECLARATION=true
  651. functions.XMLSerialize.DeclarationOption.EXCLUDING_XMLDECLARATION=true
  652. #
  653. # JSON functions.
  654. #
  655. functions.JSONObject=JSON_OBJECT(%2$s@1[ %1$s])
  656. functions.JSONArray=JSON_ARRAY(%2$s@1[ %1$s])
  657. functions.JSONExists=JSON_EXISTS(%1$s, %2$s)
  658. functions.JSONQuery=JSON_QUERY(%1$s, %2$s@3[ %3$s])
  659. functions.JSONTable=JSON_TABLE($1%s, %2$s %3$s)
  660. functions.JSONValue=JSON_VALUE(%1$s, %2$s@3[ %3$s])
  661. #
  662. # Business date functions.
  663. #
  664. functions.AddHours[any,any]=_ADD_HOURS(%1$s, %2$s)
  665. functions.AddMinutes[any,any]=_ADD_MINUTES(%1$s, %2$s)
  666. functions.AddSeconds[any,any]=_ADD_SECONDS(%1$s, %2$s)
  667. functions.AddFractionalSeconds[any,any]=_ADD_FRACTIONAL_SECONDS(%1$s, %2$s)
  668. functions.AddDays[any,any]=_ADD_DAYS(%1$s, %2$s)
  669. functions.AddWeeks[any,any]=_ADD_WEEKS(%1$s, %2$s)
  670. functions.AddMonths[any,any]=_ADD_MONTHS(%1$s, %2$s)
  671. functions.AddQuarters[any,any]=_ADD_QUARTERS(%1$s, %2$s)
  672. functions.AddYears[any,any]=_ADD_YEARS(%1$s, %2$s)
  673. functions.Age[any]=_AGE(%1$s)
  674. functions.FractionalSecondsBetween[any,any]=_FRACTIONAL_SECONDS_BETWEEN(%1$s, %2$s)
  675. functions.SecondsBetween[any,any]=_SECONDS_BETWEEN(%1$s, %2$s)
  676. functions.MinutesBetween[any,any]=_MINUTES_BETWEEN(%1$s, %2$s)
  677. functions.HoursBetween[any,any]=_HOURS_BETWEEN(%1$s, %2$s)
  678. functions.DaysBetween[any,any]=_DAYS_BETWEEN(%1$s, %2$s)
  679. functions.WeeksBetween[any,any]=_WEEKS_BETWEEN(%1$s, %2$s)
  680. functions.MonthsBetween[any,any]=_MONTHS_BETWEEN(%1$s, %2$s)
  681. functions.QuartersBetween[any,any]=_QUARTERS_BETWEEN(%1$s, %2$s)
  682. functions.YearsBetween[any,any]=_YEARS_BETWEEN(%1$s, %2$s)
  683. functions.DayOfWeek[any,any]=_DAY_OF_WEEK(%1$s, %2$s)
  684. functions.DayOfYear[any]=_DAY_OF_YEAR(%1$s)
  685. functions.DaysToEndOfMonth[any]=_DAYS_TO_END_OF_MONTH(%1$s)
  686. functions.FirstOfMonth[any]=_FIRST_OF_MONTH(%1$s)
  687. functions.LastOfMonth[any]=_LAST_OF_MONTH(%1$s)
  688. functions.MakeTimestamp[any,any,any]=_MAKE_TIMESTAMP(%1$s, %2$s, %3$s)
  689. functions.WeekOfYear[any]=_WEEK_OF_YEAR(%1$s)
  690. functions.YMDIntBetween[any,any]=_YMDINT_BETWEEN(%1$s, %2$s)
  691. #
  692. # Table functions.
  693. #
  694. functions.Unnest=UNNEST(%1$s)
  695. #
  696. # Literals.
  697. #
  698. literals.binary=true
  699. literals.blob=false
  700. literals.clob=false
  701. literals.boolean=true
  702. literals.date=true
  703. literals.time=true
  704. literals.time_with_time_zone=true
  705. literals.timestamp=true
  706. literals.timestamp_with_time_zone=true
  707. literals.interval_day=true
  708. literals.interval_day_to_hour=true
  709. literals.interval_day_to_minute=true
  710. literals.interval_day_to_second=true
  711. literals.interval_hour=true
  712. literals.interval_hour_to_minute=true
  713. literals.interval_hour_to_second=true
  714. literals.interval_minute=true
  715. literals.interval_minute_to_second=true
  716. literals.interval_second=true
  717. literals.interval_year=true
  718. literals.interval_year_to_month=true
  719. literals.interval_month=true
  720. literals.smallint=true
  721. literals.integer=true
  722. literals.long=true
  723. literals.float=true
  724. literals.double=true
  725. literals.decimal=true
  726. literals.char=true
  727. literals.nchar=true
  728. literals.varchar=true
  729. literals.nvarchar=true
  730. literals.xml=false
  731. literals.datalink=false
  732. #
  733. # Literal constraints.
  734. #
  735. literals.time.fractional_seconds=true
  736. #
  737. # Literal format specifications. Formats are compatible with String.format().
  738. # Values for default behaviour are listed.
  739. # Only char, temporal and string types can be overridden.
  740. # Fractional seconds are presented as a string of up to 10 characters: '.' followed by 9 character
  741. # 0-padded string representing nanoseconds or empty.
  742. # Literal format in specific context: literals.format.<datatype>.<context>
  743. # Currently only 'procedure' is supported and denotes stored procedure parameter.
  744. # ex. literals.format.date.procedure={d '%1$04d-%2$02d-%3$02d'}
  745. # 1 parameter (string)
  746. literals.format.binary=X'%s'
  747. # 1 parameter (string)
  748. literals.format.clob='%s'
  749. # colon separated values for TRUE, FALSE and UNKNOWN
  750. literals.format.boolean=TRUE:FALSE:UNKNOWN
  751. # 3 parameters (int year, int month, int day)
  752. literals.format.date=DATE '%1$04d-%2$02d-%3$02d'
  753. # 4 parameters (int hour, int minute, int seconds, string fractional seconds)
  754. literals.format.time=TIME '%1$02d:%2$02d:%3$02d%4$.10s'
  755. # 7 parameters (int hour, int minute, int seconds, string fractional seconds, int tz hour, int tz minute, char tz sign)
  756. literals.format.time_with_time_zone=TIME '%1$02d:%2$02d:%3$02d%4$.10s%7$c%5$02d:%6$02d'
  757. # 7 parameters (int year, int month, int day, int hours, int minute, int seconds, string fractional seconds)
  758. literals.format.timestamp=TIMESTAMP '%1$04d-%2$02d-%3$02d %4$02d:%5$02d:%6$02d%7$.10s'
  759. # 10 parameters (int year, int month, int day, int hours, int minute, int seconds, string fractional seconds, int tz hour, int tz minute, char tz sign)
  760. literals.format.timestamp_with_time_zone=TIMESTAMP '%1$04d-%2$02d-%3$02d %4$02d:%5$02d:%6$02d%7$.10s%10$c%8$02d:%9$02d'
  761. # 3 parameters (int day, int leading precision, char sign)
  762. literals.format.interval_day=INTERVAL '%3$s%1$d' DAY@2[(%2$s)]
  763. # 4 parameters (int day, int hour, int leading precision, char sign)
  764. literals.format.interval_day_to_hour=INTERVAL '%4$s%1$d %2$02d' DAY@3[(%3$s)] TO HOUR
  765. # 5 parameters (int day, int hour, int minute, int leading precision, char sign)
  766. literals.format.interval_day_to_minute=INTERVAL '%5$s%1$d %2$02d:%3$02d' DAY@4[(%4$s)] TO MINUTE
  767. # 8 parameters (int day, int hour, int minute, int seconds, string fractional seconds, int leading precision, int fractional precision, char sign)
  768. literals.format.interval_day_to_second=INTERVAL '%8$s%1$d %2$02d:%3$02d:%4$02d%5$.10s' DAY@6[(%6$s)] TO SECOND@7[(%7$s)]
  769. # 3 parameters (int hour, int leading precision, char sign)
  770. literals.format.interval_hour=INTERVAL '%3$s%1$d' HOUR@2[(%2$s)]
  771. # 4 parameters (int hour, int minute, int leading precision, char sign)
  772. literals.format.interval_hour_to_minute=INTERVAL '%4$s%1$d:%2$02d' HOUR@3[(%3$s)] TO MINUTE
  773. # 7 parameters (int hour, int minute, int seconds, string fractional seconds, int leading precision, int fractional precision, char sign)
  774. literals.format.interval_hour_to_second=INTERVAL '%7$s%1$d:%2$02d:%3$02d%4$.10s' HOUR@5[(%5$s)] TO SECOND@6[(%6$s)]
  775. # 3 parameters (int minute, int leading precision, char sign)
  776. literals.format.interval_minute=INTERVAL '%3$s%1$d' MINUTE@2[(%2$s)]
  777. # 6 parameters (int minute, int seconds, string fractional seconds, int leading precision, int fractional precision, char sign)
  778. literals.format.interval_minute_to_second=INTERVAL '%6$s%1$d:%2$02d%3$.10s' MINUTE@4[(%4$s)] TO SECOND@5[(%5$s)]
  779. # 5 parameters (int seconds, string fractional seconds, int leading precision, int fractional precision, char sign)
  780. literals.format.interval_second=INTERVAL '%5$s%1$02d%2$.10s' SECOND@3[(%3$s]@4[, %4$s)]
  781. # 3 parameters (int year, int leading precision, char sign)
  782. literals.format.interval_year=INTERVAL '%3$s%1$d' YEAR@2[(%2$s)]
  783. # 4 parameters (int year, int month, int leading precision, char sign)
  784. literals.format.interval_year_to_month=INTERVAL '%4$s%1$d-%2$02d' YEAR@3[(%3$s)] TO MONTH
  785. # 3 parameters (int month, int leading precision, char sign)
  786. literals.format.interval_month=INTERVAL '%3$s%1$d' MONTH@2[(%2$s)]
  787. # 1 parameter (string)
  788. literals.format.decimal=%s
  789. # 1 parameter (string)
  790. literals.format.char='%s'
  791. # 1 parameter (string)
  792. literals.format.nchar=N'%s'
  793. # 1 parameter (string)
  794. literals.format.varchar='%s'
  795. # 1 parameter (string)
  796. literals.format.nvarchar=N'%s'
  797. #
  798. # Data types.
  799. #
  800. dataType.binary=true
  801. dataType.blob=true
  802. dataType.clob=true
  803. dataType.boolean=true
  804. dataType.date=true
  805. dataType.time=true
  806. dataType.time_with_time_zone=true
  807. dataType.timestamp=true
  808. dataType.timestamp_with_time_zone=true
  809. dataType.interval_day=true
  810. dataType.interval_day_to_hour=true
  811. dataType.interval_day_to_minute=true
  812. dataType.interval_day_to_second=true
  813. dataType.interval_hour=true
  814. dataType.interval_hour_to_minute=true
  815. dataType.interval_hour_to_second=true
  816. dataType.interval_minute=true
  817. dataType.interval_minute_to_second=true
  818. dataType.interval_second=true
  819. dataType.interval_year=true
  820. dataType.interval_year_to_month=true
  821. dataType.interval_month=true
  822. dataType.smallint=true
  823. dataType.integer=true
  824. dataType.long=true
  825. dataType.float=true
  826. dataType.double=true
  827. dataType.decimal=true
  828. dataType.char=true
  829. dataType.nchar=true
  830. dataType.varchar=true
  831. dataType.nvarchar=true
  832. dataType.xml=true
  833. dataType.period=true
  834. dataType.array=true
  835. dataType.struct=true
  836. dataType.map=true
  837. dataType.json=true
  838. dataType.datalink=true
  839. #
  840. # dataType.comparable
  841. # Used to indicate that some data types that are comparable locally may not
  842. # be supported by the DB.
  843. #
  844. #e.g. dataType.comparable[varchar,nvarchar]=false
  845. #
  846. # dataType.promotion
  847. # Used to indicate what direction the promotion needs to occur
  848. # <lhs> -> <rhs> these properties are not symetrical
  849. #
  850. #e.g. dataType.promotion[char,nvarchar]=true
  851. #
  852. # Collation Sequence SQL (SQL statement for retrieving the collation sequence)
  853. # This statement returns a single row and single column containing the collation sequence
  854. #
  855. collation.sequence.sql=
  856. #
  857. # Datbase Encoding SQL. This statement retrieves the charset name for the non-unicode character data.
  858. # This statement returns a single row and single column with the charset name for use in a java.nio.CharsetEncoder.
  859. #
  860. database.charset.sql=
  861. #
  862. # SQL DateTime Formatter validators.
  863. # To be used in order to verify the formatting patterns that users can give when they use
  864. # the following cognos-sql syntax: CAST('12- 8-13/1:52 PM' as TIMESTAMP FORMAT 'YYYY- MM-DD/HH12:MI AM')
  865. #
  866. formatters.delimiter=[-./,';: TZ]
  867. formatters.year=Y{1,4}|R{2}|R{4}
  868. formatters.month_number_of_year=M{1,2}
  869. formatters.day_number_of_month=D{1,2}
  870. formatters.day_number_of_year=D{3}
  871. formatters.twelve_hour_clock=H{2}(12)?
  872. formatters.twenty_four_hour_clock=H{2}24
  873. formatters.am_pm=[AaPp][Mm]|[AaPp]\\.[Mm]\\.
  874. #formatters.am_pm=[AP][M]
  875. formatters.minutes_of_hour=MI
  876. formatters.seconds_of_minute=S{2}
  877. formatters.seconds_past_midnight=S{5}
  878. formatters.fractional_seconds=F{2}[1-9]
  879. formatters.time_zone_hour=TZH
  880. formatters.time_zone_minute=TZM
  881. #formatters.time_zone_second=TZS
  882. formatters.string_to_date=( \
  883. (year)(delimiter)+(month_number_of_year)(delimiter)+(day_number_of_month) \
  884. | (month_number_of_year)(delimiter)+(year)(delimiter)+(day_number_of_month) \
  885. | (month_number_of_year)(delimiter)+(day_number_of_month)(delimiter)+(year) \
  886. | (day_number_of_month)(delimiter)+(month_number_of_year)(delimiter)+(year) \
  887. | (day_number_of_month)(delimiter)+(year)(delimiter)+(month_number_of_year) \
  888. | (year)(delimiter)+(day_number_of_month)(delimiter)+(month_number_of_year) \
  889. | (year)(delimiter)+(day_number_of_month) \
  890. | (day_number_of_month)(delimiter)+(year) \
  891. | (month_number_of_year)(delimiter)+(year) \
  892. | (year)(delimiter)+(month_number_of_year) \
  893. | (day_number_of_month)(delimiter)+(month_number_of_year) \
  894. | (month_number_of_year)(delimiter)+(day_number_of_month) \
  895. | (year) \
  896. | (month_number_of_year) \
  897. | (day_number_of_year) \
  898. )
  899. formatters.string_to_time=( \
  900. (twelve_hour_clock)(delimiter)+(minutes_of_hour)(delimiter)+(seconds_of_minute)((delimiter)+((am_pm)|(fractional_seconds)|(fractional_seconds)(delimiter)+(am_pm)))? \
  901. | (minutes_of_hour)(delimiter)+(twelve_hour_clock)(delimiter)+(seconds_of_minute)((delimiter)+((am_pm)|(fractional_seconds)|(fractional_seconds)(delimiter)+(am_pm)))? \
  902. | (minutes_of_hour)(delimiter)+(seconds_of_minute)(delimiter)+(twelve_hour_clock)((delimiter)+((am_pm)|(fractional_seconds)|(fractional_seconds)(delimiter)+(am_pm)))? \
  903. | (seconds_of_minute)(delimiter)+(minutes_of_hour)(delimiter)+(twelve_hour_clock)((delimiter)+((am_pm)|(fractional_seconds)|(fractional_seconds)(delimiter)+(am_pm)))? \
  904. | (seconds_of_minute)(delimiter)+(twelve_hour_clock)(delimiter)+(minutes_of_hour)((delimiter)+((am_pm)|(fractional_seconds)|(fractional_seconds)(delimiter)+(am_pm)))? \
  905. | (twelve_hour_clock)(delimiter)+(seconds_of_minute)(delimiter)+(minutes_of_hour)((delimiter)+((am_pm)|(fractional_seconds)|(fractional_seconds)(delimiter)+(am_pm)))? \
  906. | (twenty_four_hour_clock)(delimiter)+(minutes_of_hour)(delimiter)+(seconds_of_minute)((delimiter)+(fractional_seconds))? \
  907. | (minutes_of_hour)(delimiter)+(twenty_four_hour_clock)(delimiter)+(seconds_of_minute)((delimiter)+(fractional_seconds))? \
  908. | (minutes_of_hour)(delimiter)+(seconds_of_minute)(delimiter)+(twenty_four_hour_clock)((delimiter)+(fractional_seconds))? \
  909. | (seconds_of_minute)(delimiter)+(minutes_of_hour)(delimiter)+(twenty_four_hour_clock)((delimiter)+(fractional_seconds))? \
  910. | (seconds_of_minute)(delimiter)+(twenty_four_hour_clock)(delimiter)+(minutes_of_hour)((delimiter)+(fractional_seconds))? \
  911. | (twenty_four_hour_clock)(delimiter)+(seconds_of_minute)(delimiter)+(minutes_of_hour)((delimiter)+(fractional_seconds))? \
  912. | (seconds_past_midnight) \
  913. | (twenty_four_hour_clock) \
  914. | (twelve_hour_clock)((delimiter)+(am_pm))? \
  915. | (minutes_of_hour) \
  916. | (seconds_of_minute) \
  917. | (twelve_hour_clock)(delimiter)+(minutes_of_hour)((delimiter)+(am_pm))? \
  918. | (minutes_of_hour)(delimiter)+(twelve_hour_clock)((delimiter)+(am_pm))? \
  919. | (twelve_hour_clock)(delimiter)+(seconds_of_minute)((delimiter)+(am_pm))? \
  920. | (seconds_of_minute)(delimiter)+(twelve_hour_clock)((delimiter)+(am_pm))? \
  921. | (twenty_four_hour_clock)(delimiter)+(minutes_of_hour) \
  922. | (minutes_of_hour)(delimiter)+(twenty_four_hour_clock) \
  923. | (twenty_four_hour_clock)(delimiter)+(seconds_of_minute) \
  924. | (seconds_of_minute)(delimiter)+(twenty_four_hour_clock) \
  925. | (minutes_of_hour)(delimiter)+(seconds_of_minute) \
  926. | (seconds_of_minute)(delimiter)+(minutes_of_hour) \
  927. )
  928. formatters.string_to_time_with_time_zone=( \
  929. (string_to_time)(delimiter)*(time_zone_hour)(([:])(time_zone_minute))?(delimiter)* \
  930. )
  931. formatters.string_to_timestamp=( \
  932. (string_to_date)(delimiter)+(string_to_time) \
  933. )
  934. formatters.string_to_timestamp_with_time_zone=( \
  935. (string_to_date)(delimiter)+(string_to_time_with_time_zone) \
  936. )