netezza.properties 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  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. #
  6. # Delimiters.
  7. #
  8. #
  9. # Various limits.
  10. #
  11. limits.maxDecimalPrecision=38
  12. #
  13. # General settings.
  14. #
  15. # Null ordering.
  16. #
  17. general.nullsAreSortedLow=true
  18. general.nullsAreSortedHigh=false
  19. #
  20. # Override sampling policy with a different one.
  21. # 1. tablesample accepting values such as BERNOULLI or SYSTEM
  22. # 2. rowsample accepting values such as NTH or RANDOM
  23. #
  24. sampling.tablesample=
  25. sampling.rowsample=RANDOM
  26. #
  27. # Various features.
  28. #
  29. supports.nestedWithClause=false
  30. supports.aliasInOrderByExpression=false
  31. supports.subqueriesInAggregate=false
  32. supports.recursiveWithClause=false
  33. supports.booleanExpressionsInSelectList=false
  34. supports.correlatedSubqueriesInSelectList=false
  35. supports.correlatedSubqueriesInIns=false
  36. supports.callProcedureInDerivedTable=false
  37. #casting with formatting pattern support
  38. supports.formatters.string_to_date=false
  39. supports.formatters.string_to_time=false
  40. supports.formatters.string_to_time_with_time_zone=false
  41. supports.formatters.string_to_timestamp=false
  42. supports.formatters.string_to_timestamp_with_time_zone=false
  43. #
  44. # Tables.
  45. #
  46. tables.lateral.derived=false
  47. #
  48. # Constructors.
  49. #
  50. constructors.table=false
  51. constructors.row=false
  52. constructors.array=false
  53. constructors.period=false
  54. #
  55. # Constructors - context overrides.
  56. #
  57. constructors.row.simpleCase=false
  58. constructors.row.between=false
  59. #
  60. # Clauses.
  61. #
  62. clauses.Top=LIMIT %1$s
  63. clauses.At=
  64. clauses.Window=
  65. clauses.WithRecursive=
  66. clauses.TableSampleSystem=
  67. clauses.TableSampleBernoulli=
  68. clauses.ForSystemTimeAsOf=
  69. clauses.ForSystemTimeFrom=
  70. clauses.ForSystemTimeBetween=
  71. #
  72. # Joins.
  73. #
  74. #
  75. # Set operators.
  76. #
  77. #
  78. # Logical operators.
  79. #
  80. operators.logical.Is=
  81. operators.logical.IsNot=
  82. #
  83. # Arithmetic operators.
  84. #
  85. operators.arithmetic.Subtract[any,datetime]=
  86. #
  87. # Group By operators.
  88. #
  89. #
  90. # Comparison predicates.
  91. #
  92. #
  93. # Various predicates.
  94. #
  95. predicates.IsDistinctFrom[any,any]=(%1$s IS NULL AND %2$s IS NOT NULL) OR (%1$s IS NOT NULL AND %2$s IS NULL) OR %1$s <> %2$s
  96. predicates.IsNotDistinctFrom[any,any]=%1$s = %2$s OR (%1$s IS NULL AND %2$s IS NULL)
  97. predicates.LikeRegex=
  98. predicates.LikeRegex.flag=
  99. predicates.Similar=
  100. predicates.Similar.escape=
  101. #
  102. # Period predicates.
  103. #
  104. predicates.PeriodOverlaps[any,any]=
  105. predicates.PeriodEquals[any,any]=
  106. predicates.PeriodContains[any,any]=
  107. predicates.PeriodPrecedes[any,any]=
  108. predicates.PeriodSucceeds[any,any]=
  109. predicates.PeriodImmediatelyPrecedes[any,any]=
  110. predicates.PeriodImmediatelySucceeds[any,any]=
  111. #
  112. # Expressions.
  113. #
  114. #
  115. # Cast expression.
  116. #
  117. expressions.Cast[time,time_with_time_zone]=
  118. expressions.Cast[time,timestamp]=
  119. expressions.Cast[timestamp,time_with_time_zone]=
  120. expressions.Cast[decimal,integer]=CAST(TRUNC(%1$s) as INTEGER)
  121. expressions.Cast[double,integer]=CAST(TRUNC(%1$s) as INTEGER)
  122. expressions.Cast[float,integer]=CAST(TRUNC(%1$s) as INTEGER)
  123. #
  124. # Extract expression.
  125. #
  126. expressions.Extract.SECOND[any]=CAST(EXTRACT(MILLISECOND FROM %1$s) as DECIMAL)/1000
  127. #
  128. ## COSHYP not supported by Netezza.
  129. functions.Coshyp[any]=
  130. ## SINHYP not supported by Netezza.
  131. functions.Sinhyp[any]=
  132. ## TANHYP not supported by Netezza.
  133. functions.Tanhyp[any]=
  134. #
  135. # Windowed aggregates (SQL/OLAP).
  136. #
  137. olap.RatioToReport[any]=
  138. olap.Tertile[]=
  139. olap.Difference[any]=
  140. olap.PercentileCont[any,any]=
  141. olap.PercentileDisc[any,any]=
  142. olap.Median[any]=
  143. # RESPECT|IGNORE NULLS option is not supported.
  144. olap.Lag[any,any,any,any]=
  145. olap.Lead[any,any,any,any]=
  146. olap.NthValue[any,any]=
  147. olap.NthValue[any,any,any]=
  148. olap.NthValue[any,any,any,any]=
  149. olap.Collect[any]=
  150. #
  151. # Window clause.
  152. #
  153. #
  154. # Aggregates
  155. #
  156. aggregates.PercentileCont[any,any]=
  157. aggregates.PercentileDisc[any,any]=
  158. aggregates.Median[any]=
  159. aggregates.XMLAgg=
  160. aggregates.ArrayAgg[any]=
  161. aggregates.ArrayAgg[any,any]=
  162. aggregates.Collect[any]=
  163. aggregates.ApproxCountDistinct[any]=
  164. #
  165. # Aggregates (distinct)
  166. #
  167. #
  168. # Linear regression aggregates.
  169. #
  170. aggregates.Corr[any,any]=
  171. aggregates.CovarPop[any,any]=
  172. aggregates.CovarSamp[any,any]=
  173. aggregates.RegrAvgX[any,any]=
  174. aggregates.RegrAvgY[any,any]=
  175. aggregates.RegrCount[any,any]=
  176. aggregates.RegrIntercept[any,any]=
  177. aggregates.RegrR2[any,any]=
  178. aggregates.RegrSlope[any,any]=
  179. aggregates.RegrSXX[any,any]=
  180. aggregates.RegrSXY[any,any]=
  181. aggregates.RegrSYY[any,any]=
  182. #
  183. # JSON aggregates.
  184. #
  185. aggregates.JSONArrayAgg=
  186. aggregates.JSONObjectAgg=
  187. #
  188. # Character scalar functions.
  189. #
  190. functions.BitLength[any]=(OCTET_LENGTH(%1$s) * 8)
  191. functions.Index[any,any]=POSITION(%2$s IN %1$s)
  192. functions.Translate[any,any]=
  193. functions.Normalize[any]=
  194. functions.Normalize[any,any]=
  195. functions.Normalize[any,any,any]=
  196. #
  197. # Regular expression functions.
  198. #
  199. functions.SubstringRegex[any,any,any,any,any]=
  200. functions.OccurrencesRegex[any,any,any,any]=
  201. functions.PositionRegex[any,any,any,any,any,any]=
  202. #
  203. # Numeric scalar functions.
  204. #
  205. functions.Abs[interval_day_time]=
  206. functions.Abs[interval_year_month]=
  207. functions.Ceiling[any]=CEIL(%1$s)
  208. functions.Round[any,any,any]=
  209. functions.Power[any,any]=POW(%1$s, %2$s)
  210. functions.Random[]=RANDOM()
  211. functions.Random[any]=
  212. functions.Log10[any]=LOG(%1$s)
  213. #
  214. # Array scalar functions.
  215. #
  216. functions.Cardinality[any]=
  217. functions.TrimArray[any,any]=
  218. #
  219. # Trigonometric functions.
  220. #
  221. #
  222. # Datetime value functions.
  223. #
  224. functions.CurrentDate[]=CURRENT_DATE
  225. functions.CurrentTime[]=
  226. functions.CurrentTimestamp[]=CURRENT_TIMESTAMP
  227. functions.LocalTime[]=CAST(CURRENT_TIME AS TIME)
  228. functions.LocalTimestamp[]=CAST(CURRENT_TIMESTAMP AS TIMESTAMP)
  229. functions.CurrentTime[numeric]=
  230. functions.CurrentTimestamp[numeric]=
  231. functions.LocalTime[numeric]=
  232. functions.LocalTimestamp[numeric]=
  233. #
  234. # XML functions.
  235. #
  236. functions.XMLAttributes=
  237. functions.XMLComment=
  238. functions.XMLConcat=
  239. functions.XMLDocument=
  240. functions.XMLElement=
  241. functions.XMLExists=
  242. functions.XMLForest=
  243. functions.XMLParse=
  244. functions.XMLPI=
  245. functions.XMLNamespaces=
  246. functions.XMLQuery=
  247. functions.XMLSerialize=
  248. functions.XMLTable=
  249. functions.XMLText=
  250. functions.XMLTransform=
  251. functions.XMLValidate=
  252. #
  253. # JSON functions.
  254. #
  255. functions.JSONArray=
  256. functions.JSONExists=
  257. functions.JSONObject=
  258. functions.JSONQuery=
  259. functions.JSONTable=
  260. functions.JSONValue=
  261. #
  262. # Business date functions.
  263. #
  264. functions.AddFractionalSeconds[any,any]=
  265. functions.AddSeconds[interval_day_time,numeric]=(CAST( %1$s AS INTERVAL) + (INTERVAL '1 SECOND' * (%2$s)))
  266. functions.AddSeconds[time,numeric]=(CAST( %1$s AS TIME) + (INTERVAL '1 SECOND' * (%2$s)))
  267. functions.AddSeconds[timestamp,numeric]=(CAST( %1$s AS TIMESTAMP) + (INTERVAL '1 SECOND' * (%2$s)))
  268. functions.AddSeconds[time_with_time_zone,numeric]=(CAST( %1$s AS TIMETZ) + (INTERVAL '1 SECOND' * (%2$s)))
  269. functions.AddSeconds[timestamp_with_time_zone,numeric]=
  270. functions.AddMinutes[interval_day_time,numeric]=(CAST( %1$s AS INTERVAL) + (INTERVAL '1 MINUTE' * (%2$s)))
  271. functions.AddMinutes[time,numeric]=(CAST( %1$s AS TIME) + (INTERVAL '1 MINUTE' * (%2$s)))
  272. functions.AddMinutes[timestamp,numeric]=(CAST( %1$s AS TIMESTAMP) + (INTERVAL '1 MINUTE' * (%2$s)))
  273. functions.AddMinutes[time_with_time_zone,numeric]=(CAST( %1$s AS TIMETZ) + (INTERVAL '1 MINUTE' * (%2$s)))
  274. functions.AddMinutes[timestamp_with_time_zone,numeric]=
  275. functions.AddHours[interval_day_time,numeric]=(CAST( %1$s AS INTERVAL) + (INTERVAL '1 HOUR' * (%2$s)))
  276. functions.AddHours[time,numeric]=(CAST( %1$s AS TIME) + (INTERVAL '1 HOUR' * (%2$s)))
  277. functions.AddHours[timestamp,numeric]=(CAST( %1$s AS TIMESTAMP) + (INTERVAL '1 HOUR' * (%2$s)))
  278. functions.AddHours[time_with_time_zone,numeric]=(CAST( %1$s AS TIMETZ) + (INTERVAL '1 HOUR' * (%2$s)))
  279. functions.AddHours[timestamp_with_time_zone,numeric]=
  280. functions.AddDays[any,any]=((%1$s) + INTERVAL '1 DAY' * (%2$s))
  281. functions.AddDays[interval_day_time,numeric]=
  282. functions.AddDays[date,numeric]=CAST((%1$s) + INTERVAL '1 DAY' * (%2$s) AS DATE)
  283. functions.AddDays[timestamp_with_time_zone,numeric]=
  284. functions.AddWeeks[any,any]=((%1$s) + INTERVAL '7 DAY' * (%2$s))
  285. functions.AddWeeks[interval_day_time,numeric]=
  286. functions.AddWeeks[date,numeric]=CAST((%1$s) + INTERVAL '7 DAY' * (%2$s) AS DATE)
  287. functions.AddWeeks[timestamp_with_time_zone,numeric]=
  288. # Netezza has different implementation for ADD_MONTHS and %1$s + INTERVAL %2$s MONTH
  289. # ADD_MONTHS implements rule: result is last day of the month if months are added to the last day of the month.
  290. # Feb28 + 1 month -> Mar31. This is inconsistent with local processing and other vendors.
  291. #functions.AddMonths[any,any]=ADD_MONTHS(%1$s, %2$s)
  292. functions.AddMonths[any,any]=((%1$s) + (INTERVAL '1 MONTH' * (%2$s)))
  293. functions.AddMonths[interval_year_month,numeric]=
  294. functions.AddMonths[date,numeric]=CAST(((%1$s) + (INTERVAL '1 MONTH' * (%2$s))) AS DATE)
  295. functions.AddMonths[timestamp_with_time_zone,numeric]=
  296. functions.AddQuarters[any,any]=ADD_MONTHS(%1$s, (%2$s * 3))
  297. functions.AddQuarters[interval_year_month,numeric]=
  298. functions.AddQuarters[timestamp_with_time_zone,numeric]=
  299. # ADD_MONTHS implements rule: result is last day of the month if months are added to the last day of the month.
  300. # Feb28, 2011 + 1 year -> Feb29, 2012. This is inconsistent with local processing and other vendors.
  301. #functions.AddYears[any,any]=ADD_MONTHS(%1$s, ( (%2$s) * 12 ))
  302. functions.AddYears[any,any]=(%1$s + (INTERVAL '1 YEAR' * (%2$s)))
  303. functions.AddYears[interval_year_month,numeric]=
  304. functions.AddYears[date,numeric]=CAST(((%1$s) + (INTERVAL '1 YEAR' * (%2$s))) AS DATE)
  305. functions.AddYears[timestamp_with_time_zone,numeric]=
  306. functions.FractionalSecondsBetween[any,any]=
  307. functions.SecondsBetween[any,any]=
  308. functions.MinutesBetween[any,any]=
  309. functions.HoursBetween[any,any]=
  310. functions.DaysBetween[date,date]=((%1$s) - (%2$s))
  311. functions.DaysBetween[date,timestamp]=((%1$s) - CAST(%2$s AS DATE))
  312. functions.DaysBetween[any,any]=(CAST(%1$s AS DATE) - CAST(%2$s AS DATE))
  313. functions.DaysBetween[timestamp,date]=(CAST(%1$s AS DATE) - (%2$s))
  314. functions.WeeksBetween[any,any]=
  315. functions.MonthsBetween[any,any]=CAST(TRUNC(MONTHS_BETWEEN(%1$s, %2$s)) AS INTEGER)
  316. functions.QuartersBetween[any,any]=
  317. functions.YearsBetween[date,date]=EXTRACT(YEAR FROM AGE(%1$s, %2$s))
  318. functions.YearsBetween[date,timestamp]=EXTRACT(YEAR FROM AGE(%1$s, CAST(%2$s as DATE)))
  319. functions.YearsBetween[any,any]=EXTRACT(YEAR FROM AGE(cast(%1$s AS DATE), CAST(%2$s AS DATE)))
  320. functions.YearsBetween[timestamp,date]=EXTRACT(YEAR FROM AGE(CAST(%1$s AS DATE), %2$s))
  321. functions.Age[any]=
  322. functions.DayOfWeek[any,any]=(MOD( CAST( TO_CHAR( %1$s, 'D' ) AS INTEGER ) + 6 - %2$s, 7 ) + 1)
  323. functions.DayOfYear[any]=EXTRACT(DOY FROM %1$s)
  324. functions.DaysToEndOfMonth[any]=(EXTRACT( DAY FROM (ADD_MONTHS(%1$s - ( EXTRACT( DAY FROM %1$s ) * INTERVAL '1 DAY') + INTERVAL '1 DAY', 1) - INTERVAL '1 DAY')) - EXTRACT(DAY FROM %1$s))
  325. functions.FirstOfMonth[any]=((%1$s) - ( EXTRACT( DAY FROM (%1$s) ) * INTERVAL '1 DAY' ) + INTERVAL '1 DAY')
  326. functions.LastOfMonth[any]=(ADD_MONTHS( ( %1$s - ( EXTRACT( DAY FROM %1$s ) * INTERVAL '1 DAY' ) + INTERVAL '1 DAY' ), 1 ) - INTERVAL '1 DAY')
  327. functions.MakeTimestamp[any,any,any]=TO_TIMESTAMP(%1$s || '-' || %2$s || '-' || %3$s, 'YYYY-MM-DD')
  328. functions.WeekOfYear[any]=CAST( TO_CHAR( CAST(%1$s AS TIMESTAMP),'IW') AS INTEGER)
  329. functions.YMDIntBetween[any,any]=
  330. #
  331. # FDS functions.
  332. #
  333. functions.concat[any,any]={fn CONCAT(%1$s, %2$s)}
  334. #
  335. # Literals.
  336. #
  337. literals.binary=false
  338. literals.blob=false
  339. literals.clob=false
  340. literals.boolean=false
  341. literals.date=true
  342. literals.time=true
  343. literals.time_with_time_zone=false
  344. literals.timestamp=true
  345. literals.timestamp_with_time_zone=false
  346. literals.interval_day=false
  347. literals.interval_day_to_hour=false
  348. literals.interval_day_to_minute=false
  349. literals.interval_day_to_second=false
  350. literals.interval_hour=false
  351. literals.interval_hour_to_minute=false
  352. literals.interval_hour_to_second=false
  353. literals.interval_minute=false
  354. literals.interval_minute_to_second=false
  355. literals.interval_second=false
  356. literals.interval_year=false
  357. literals.interval_year_to_month=false
  358. literals.interval_month=false
  359. literals.decimal=true
  360. literals.double=true
  361. literals.float=true
  362. literals.real=true
  363. literals.integer=true
  364. literals.long=true
  365. literals.smallint=true
  366. literals.char=true
  367. literals.nchar=true
  368. literals.nvarchar=true
  369. literals.varchar=true
  370. literals.xml=false
  371. #
  372. # literal formats
  373. #
  374. literals.format.date=DATE '%1$04d-%2$02d-%3$02d'
  375. literals.format.time=TIME '%1$02d:%2$02d:%3$02d%4$.7s'
  376. literals.format.time_with_time_zone={t '%1$02d:%2$02d:%3$02d%4$.4s%7$c%5$02d:%6$02d'}
  377. literals.format.timestamp=TIMESTAMP '%1$04d-%2$02d-%3$02d %4$02d:%5$02d:%6$02d%7$.7s'
  378. literals.format.timestamp_with_time_zone={ts '%1$04d-%2$02d-%3$02d %4$02d:%5$02d:%6$02d%7$.10s%10$c%8$02d:%9$02d'}
  379. #
  380. # Data types.
  381. #
  382. dataType.blob=false
  383. dataType.clob=false
  384. dataType.timestamp_with_time_zone=false
  385. dataType.interval_day=false
  386. dataType.interval_day_to_hour=false
  387. dataType.interval_day_to_minute=false
  388. dataType.interval_day_to_second=false
  389. dataType.interval_hour=false
  390. dataType.interval_hour_to_minute=false
  391. dataType.interval_hour_to_second=false
  392. dataType.interval_minute=false
  393. dataType.interval_minute_to_second=false
  394. dataType.interval_second=false
  395. dataType.interval_year=false
  396. dataType.interval_year_to_month=false
  397. dataType.interval_month=false
  398. dataType.period=false
  399. #
  400. # Data source type overrides
  401. #
  402. datasource.type.NCHAR=nchar(%1$s)
  403. datasource.type.NVARCHAR=nvarchar(%1$s)
  404. datasource.type.TIMETZ=time with time zone
  405. datasource.type.INTERVAL=varchar(%1$s)
  406. #
  407. # Data source type overrides
  408. # driver 4.5
  409. datasource.type.INTERVAL_DAY=varchar(%1$s)
  410. #
  411. # We are unable to retrieve the collation sequence from teradata but we can still check if the comparison is case sensitive or not
  412. #
  413. collation.sequence.sql=SELECT '', CASE WHEN 'A' = 'a' and 'é' = 'e' THEN 'CI_AI' WHEN 'A' = 'a' and 'é' <> 'e' THEN 'CI_AS' WHEN 'A' <> 'a' and 'é' <> 'e' THEN 'CS_AS' ELSE 'CS_AI' END as COLLATOR_STRENGTH