Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.10 KB | None | 0 0
  1. -- psql -d postgres -a -f implicitCasts.sql > result.log 2>&1
  2. \pset null 'NULL'
  3.  
  4. DROP TYPE IF EXISTS structIntDoubleTy;
  5. DROP TYPE IF EXISTS structStringIntTy;
  6.  
  7. CREATE TYPE structIntDoubleTy AS (
  8. d0 int,
  9. d1 float8
  10. );
  11.  
  12. CREATE TYPE structStringIntTy AS (
  13. d0 text,
  14. d1 int
  15. );
  16.  
  17. DROP TABLE IF EXISTS srcTestTable;
  18. CREATE TABLE srcTestTable(
  19. shortVal smallint,
  20. intVal int,
  21. longVal bigint,
  22. doubleVal float8,
  23. floatVal float4,
  24. decimal3_0Val decimal(3, 0),
  25. decimal5_0Val decimal(5, 0),
  26. decimal10_0Val decimal(10, 0),
  27. decimal10_2Val decimal(10, 2),
  28. decimal20_0Val decimal(20, 0),
  29. decimal30_15Val decimal(30, 15),
  30. decimal14_7Val decimal(14, 7),
  31. binaryVal bytea,
  32. booleanVal boolean,
  33. stringVal text,
  34. dateVal date,
  35. timestampVal timestamp,
  36. arrayIntVal int[],
  37. arrayDoubleVal float8[],
  38. structIntDoubleVal structIntDoubleTy,
  39. structStringIntVal structStringIntTy
  40. );
  41.  
  42. INSERT INTO srcTestTable VALUES(
  43. 1, 1, 1, 1.0, 1.0, 1, 1, 1, 1.0, 1.0, 1.0, 1.0, 'abc', true, 'abc', '1970-01-01', '1970-01-01 00:00:00',
  44. '{1, 2, 3}', '{1.0, 2.0, 3.0}', ROW(1, 1.0), ROW('a', 1)
  45. );
  46.  
  47. INSERT INTO srcTestTable VALUES(
  48. 32767, 2147483647, 9223372036854775807, 1.797693e+308, 3.402823e+38,
  49. 999, 99999, 9999999999, 99999.99, 9999999999999999999, 999999999999999.999999999999999, 9999999.9999999,
  50. 'def', false, 'def', '2018-07-06', '2018-07-06 00:00:00',
  51. '{4, 5, 6}', '{4.0, 5.0, 6.0}', ROW(2, 2.0), ROW('b', 2)
  52. );
  53.  
  54. SELECT * FROM srcTestTable;
  55.  
  56. -- binary arithmetic expression cases
  57.  
  58. -- (short, *)
  59. SELECT pg_typeof(shortVal * intVal) FROM srcTestTable WHERE shortVal = 1;
  60. SELECT pg_typeof(shortVal * longVal) FROM srcTestTable WHERE shortVal = 1;
  61. SELECT pg_typeof(shortVal * doubleVal) FROM srcTestTable WHERE shortVal = 1;
  62. SELECT pg_typeof(shortVal * floatVal) FROM srcTestTable WHERE shortVal = 1;
  63. SELECT pg_typeof(shortVal * decimal3_0Val) FROM srcTestTable WHERE shortVal = 1;
  64. SELECT pg_typeof(shortVal * decimal5_0Val) FROM srcTestTable WHERE shortVal = 1;
  65. SELECT pg_typeof(shortVal * decimal10_0Val) FROM srcTestTable WHERE shortVal = 1;
  66. SELECT pg_typeof(shortVal * decimal10_2Val) FROM srcTestTable WHERE shortVal = 1;
  67. SELECT pg_typeof(shortVal * decimal20_0Val) FROM srcTestTable WHERE shortVal = 1;
  68. SELECT pg_typeof(shortVal * decimal30_15Val) FROM srcTestTable WHERE shortVal = 1;
  69. SELECT pg_typeof(shortVal * decimal14_7Val) FROM srcTestTable WHERE shortVal = 1;
  70.  
  71. -- (int, *)
  72. SELECT pg_typeof(intVal * longVal) FROM srcTestTable WHERE intVal = 1;
  73. SELECT pg_typeof(intVal * doubleVal) FROM srcTestTable WHERE intVal = 1;
  74. SELECT pg_typeof(intVal * floatVal) FROM srcTestTable WHERE intVal = 1;
  75. SELECT pg_typeof(intVal * decimal3_0Val) FROM srcTestTable WHERE intVal = 1;
  76. SELECT pg_typeof(intVal * decimal5_0Val) FROM srcTestTable WHERE intVal = 1;
  77. SELECT pg_typeof(intVal * decimal10_0Val) FROM srcTestTable WHERE intVal = 1;
  78. SELECT pg_typeof(intVal * decimal10_2Val) FROM srcTestTable WHERE intVal = 1;
  79. SELECT pg_typeof(intVal * decimal20_0Val) FROM srcTestTable WHERE intVal = 1;
  80. SELECT pg_typeof(intVal * decimal30_15Val) FROM srcTestTable WHERE intVal = 1;
  81. SELECT pg_typeof(intVal * decimal14_7Val) FROM srcTestTable WHERE intVal = 1;
  82.  
  83. -- (long, *)
  84. SELECT pg_typeof(longVal * doubleVal) FROM srcTestTable WHERE longVal = 1;
  85. SELECT pg_typeof(longVal * floatVal) FROM srcTestTable WHERE longVal = 1;
  86. SELECT pg_typeof(longVal * decimal3_0Val) FROM srcTestTable WHERE longVal = 1;
  87. SELECT pg_typeof(longVal * decimal5_0Val) FROM srcTestTable WHERE longVal = 1;
  88. SELECT pg_typeof(longVal * decimal10_0Val) FROM srcTestTable WHERE longVal = 1;
  89. SELECT pg_typeof(longVal * decimal10_2Val) FROM srcTestTable WHERE longVal = 1;
  90. SELECT pg_typeof(longVal * decimal20_0Val) FROM srcTestTable WHERE longVal = 1;
  91. SELECT pg_typeof(longVal * decimal30_15Val) FROM srcTestTable WHERE longVal = 1;
  92. SELECT pg_typeof(longVal * decimal14_7Val) FROM srcTestTable WHERE longVal = 1;
  93.  
  94. -- (double, *)
  95. SELECT pg_typeof(doubleVal * floatVal) FROM srcTestTable WHERE doubleVal < 1.1;
  96. SELECT pg_typeof(doubleVal * decimal3_0Val) FROM srcTestTable WHERE doubleVal < 1.1;
  97. SELECT pg_typeof(doubleVal * decimal5_0Val) FROM srcTestTable WHERE doubleVal < 1.1;
  98. SELECT pg_typeof(doubleVal * decimal10_0Val) FROM srcTestTable WHERE doubleVal < 1.1;
  99. SELECT pg_typeof(doubleVal * decimal10_2Val) FROM srcTestTable WHERE doubleVal < 1.1;
  100. SELECT pg_typeof(doubleVal * decimal20_0Val) FROM srcTestTable WHERE doubleVal < 1.1;
  101. SELECT pg_typeof(doubleVal * decimal30_15Val) FROM srcTestTable WHERE doubleVal < 1.1;
  102. SELECT pg_typeof(doubleVal * decimal14_7Val) FROM srcTestTable WHERE doubleVal < 1.1;
  103.  
  104. -- (float, *)
  105. SELECT pg_typeof(floatVal * decimal3_0Val) FROM srcTestTable WHERE floatVal < 1.1;
  106. SELECT pg_typeof(floatVal * decimal5_0Val) FROM srcTestTable WHERE floatVal < 1.1;
  107. SELECT pg_typeof(floatVal * decimal10_0Val) FROM srcTestTable WHERE floatVal < 1.1;
  108. SELECT pg_typeof(floatVal * decimal10_2Val) FROM srcTestTable WHERE floatVal < 1.1;
  109. SELECT pg_typeof(floatVal * decimal20_0Val) FROM srcTestTable WHERE floatVal < 1.1;
  110. SELECT pg_typeof(floatVal * decimal30_15Val) FROM srcTestTable WHERE floatVal < 1.1;
  111. SELECT pg_typeof(floatVal * decimal14_7Val) FROM srcTestTable WHERE floatVal < 1.1;
  112.  
  113. -- (decimal(3, 0), *)
  114. SELECT pg_typeof(decimal3_0Val * decimal5_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  115. SELECT pg_typeof(decimal3_0Val * decimal10_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  116. SELECT pg_typeof(decimal3_0Val * decimal10_2Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  117. SELECT pg_typeof(decimal3_0Val * decimal20_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  118. SELECT pg_typeof(decimal3_0Val * decimal30_15Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  119. SELECT pg_typeof(decimal3_0Val * decimal14_7Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  120.  
  121. -- (decimal(5, 0), *)
  122. SELECT pg_typeof(decimal5_0Val * decimal10_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  123. SELECT pg_typeof(decimal5_0Val * decimal10_2Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  124. SELECT pg_typeof(decimal5_0Val * decimal20_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  125. SELECT pg_typeof(decimal5_0Val * decimal30_15Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  126. SELECT pg_typeof(decimal5_0Val * decimal14_7Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  127.  
  128. -- (decimal(10, 0), *)
  129. SELECT pg_typeof(decimal10_0Val * decimal10_2Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  130. SELECT pg_typeof(decimal10_0Val * decimal20_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  131. SELECT pg_typeof(decimal10_0Val * decimal30_15Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  132. SELECT pg_typeof(decimal10_0Val * decimal14_7Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  133.  
  134. -- (decimal(10, 2), *)
  135. SELECT pg_typeof(decimal10_2Val * decimal20_0Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  136. SELECT pg_typeof(decimal10_2Val * decimal30_15Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  137. SELECT pg_typeof(decimal10_2Val * decimal14_7Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  138.  
  139. -- (decimal(30, 15), *)
  140. SELECT pg_typeof(decimal30_15Val * decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  141. SELECT pg_typeof(decimal30_15Val * decimal14_7Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  142.  
  143.  
  144. -- binary arithmetic expression cases
  145.  
  146. -- (binary, *)
  147. SELECT pg_typeof(binaryVal || shortVal) FROM srcTestTable LIMIT 1;
  148. SELECT pg_typeof(binaryVal || intVal) FROM srcTestTable LIMIT 1;
  149. SELECT pg_typeof(binaryVal || longVal) FROM srcTestTable LIMIT 1;
  150. SELECT pg_typeof(binaryVal || doubleVal) FROM srcTestTable LIMIT 1;
  151. SELECT pg_typeof(binaryVal || floatVal) FROM srcTestTable LIMIT 1;
  152. SELECT pg_typeof(binaryVal || decimal3_0Val) FROM srcTestTable LIMIT 1;
  153. SELECT pg_typeof(binaryVal || decimal5_0Val) FROM srcTestTable LIMIT 1;
  154. SELECT pg_typeof(binaryVal || decimal10_0Val) FROM srcTestTable LIMIT 1;
  155. SELECT pg_typeof(binaryVal || decimal10_2Val) FROM srcTestTable LIMIT 1;
  156. SELECT pg_typeof(binaryVal || decimal20_0Val) FROM srcTestTable LIMIT 1;
  157. SELECT pg_typeof(binaryVal || decimal30_15Val) FROM srcTestTable LIMIT 1;
  158. SELECT pg_typeof(binaryVal || decimal14_7Val) FROM srcTestTable LIMIT 1;
  159. SELECT pg_typeof(binaryVal || booleanVal) FROM srcTestTable LIMIT 1;
  160. SELECT pg_typeof(binaryVal || stringVal) FROM srcTestTable LIMIT 1;
  161. SELECT pg_typeof(binaryVal || dateVal) FROM srcTestTable LIMIT 1;
  162. SELECT pg_typeof(binaryVal || timestampVal) FROM srcTestTable LIMIT 1;
  163. SELECT pg_typeof(binaryVal || arrayIntVal) FROM srcTestTable LIMIT 1;
  164. SELECT pg_typeof(binaryVal || arrayDoubleVal) FROM srcTestTable LIMIT 1;
  165. SELECT pg_typeof(binaryVal || structIntDoubleVal) FROM srcTestTable LIMIT 1;
  166. SELECT pg_typeof(binaryVal || structStringIntVal) FROM srcTestTable LIMIT 1;
  167.  
  168. -- (text, *)
  169. SELECT pg_typeof(stringVal || shortVal) FROM srcTestTable LIMIT 1;
  170. SELECT pg_typeof(stringVal || intVal) FROM srcTestTable LIMIT 1;
  171. SELECT pg_typeof(stringVal || longVal) FROM srcTestTable LIMIT 1;
  172. SELECT pg_typeof(stringVal || doubleVal) FROM srcTestTable LIMIT 1;
  173. SELECT pg_typeof(stringVal || floatVal) FROM srcTestTable LIMIT 1;
  174. SELECT pg_typeof(stringVal || decimal3_0Val) FROM srcTestTable LIMIT 1;
  175. SELECT pg_typeof(stringVal || decimal5_0Val) FROM srcTestTable LIMIT 1;
  176. SELECT pg_typeof(stringVal || decimal10_0Val) FROM srcTestTable LIMIT 1;
  177. SELECT pg_typeof(stringVal || decimal10_2Val) FROM srcTestTable LIMIT 1;
  178. SELECT pg_typeof(stringVal || decimal20_0Val) FROM srcTestTable LIMIT 1;
  179. SELECT pg_typeof(stringVal || decimal30_15Val) FROM srcTestTable LIMIT 1;
  180. SELECT pg_typeof(stringVal || decimal14_7Val) FROM srcTestTable LIMIT 1;
  181. SELECT pg_typeof(stringVal || booleanVal) FROM srcTestTable LIMIT 1;
  182. SELECT pg_typeof(stringVal || stringVal) FROM srcTestTable LIMIT 1;
  183. SELECT pg_typeof(stringVal || dateVal) FROM srcTestTable LIMIT 1;
  184. SELECT pg_typeof(stringVal || timestampVal) FROM srcTestTable LIMIT 1;
  185. SELECT pg_typeof(stringVal || arrayIntVal) FROM srcTestTable LIMIT 1;
  186. SELECT pg_typeof(stringVal || arrayDoubleVal) FROM srcTestTable LIMIT 1;
  187. SELECT pg_typeof(stringVal || structIntDoubleVal) FROM srcTestTable LIMIT 1;
  188. SELECT pg_typeof(stringVal || structStringIntVal) FROM srcTestTable LIMIT 1;
  189.  
  190.  
  191. -- function inputs
  192.  
  193. -- from * to short
  194. DROP FUNCTION IF EXISTS shortIn;
  195. CREATE FUNCTION shortIn(smallint) RETURNS smallint
  196. AS 'select $1;'
  197. LANGUAGE SQL
  198. IMMUTABLE
  199. RETURNS NULL ON NULL INPUT;
  200.  
  201. SELECT shortIn(intVal) FROM srcTestTable WHERE intVal = 1;
  202. SELECT shortIn(longVal) FROM srcTestTable WHERE longVal = 1;
  203. SELECT shortIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  204. SELECT shortIn(floatVal) FROM srcTestTable WHERE floatVal < 1.1;
  205. SELECT shortIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  206. SELECT shortIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  207. SELECT shortIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  208. SELECT shortIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  209. SELECT shortIn(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  210. SELECT shortIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  211. SELECT shortIn(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  212. SELECT shortIn(binaryVal) FROM srcTestTable LIMIT 1;
  213. SELECT shortIn(booleanVal) FROM srcTestTable LIMIT 1;
  214. SELECT shortIn(stringVal) FROM srcTestTable LIMIT 1;
  215. SELECT shortIn(dateVal) FROM srcTestTable LIMIT 1;
  216. SELECT shortIn(timestampVal) FROM srcTestTable LIMIT 1;
  217. SELECT shortIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  218. SELECT shortIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  219. SELECT shortIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  220. SELECT shortIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  221. SELECT shortIn(null);
  222.  
  223. -- from * to int
  224. DROP FUNCTION IF EXISTS intIn;
  225. CREATE FUNCTION intIn(int) RETURNS int
  226. AS 'select $1;'
  227. LANGUAGE SQL
  228. IMMUTABLE
  229. RETURNS NULL ON NULL INPUT;
  230.  
  231. SELECT intIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  232. SELECT intIn(longVal) FROM srcTestTable WHERE longVal = 1;
  233. SELECT intIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  234. SELECT intIn(floatVal) FROM srcTestTable WHERE floatVal < 1.1;
  235. SELECT intIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  236. SELECT intIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  237. SELECT intIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  238. SELECT intIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  239. SELECT intIn(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  240. SELECT intIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  241. SELECT intIn(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  242. SELECT intIn(binaryVal) FROM srcTestTable LIMIT 1;
  243. SELECT intIn(booleanVal) FROM srcTestTable LIMIT 1;
  244. SELECT intIn(stringVal) FROM srcTestTable LIMIT 1;
  245. SELECT intIn(dateVal) FROM srcTestTable LIMIT 1;
  246. SELECT intIn(timestampVal) FROM srcTestTable LIMIT 1;
  247. SELECT intIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  248. SELECT intIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  249. SELECT intIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  250. SELECT intIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  251. SELECT intIn(null);
  252.  
  253. -- from * to long
  254. DROP FUNCTION IF EXISTS longIn;
  255. CREATE FUNCTION longIn(bigint) RETURNS bigint
  256. AS 'select $1;'
  257. LANGUAGE SQL
  258. IMMUTABLE
  259. RETURNS NULL ON NULL INPUT;
  260.  
  261. SELECT longIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  262. SELECT longIn(intVal) FROM srcTestTable WHERE intVal = 1;
  263. SELECT longIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  264. SELECT longIn(floatVal) FROM srcTestTable WHERE floatVal < 1.1;
  265. SELECT longIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  266. SELECT longIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  267. SELECT longIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  268. SELECT longIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  269. SELECT longIn(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  270. SELECT longIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  271. SELECT longIn(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  272. SELECT longIn(binaryVal) FROM srcTestTable LIMIT 1;
  273. SELECT longIn(booleanVal) FROM srcTestTable LIMIT 1;
  274. SELECT longIn(stringVal) FROM srcTestTable LIMIT 1;
  275. SELECT longIn(dateVal) FROM srcTestTable LIMIT 1;
  276. SELECT longIn(timestampVal) FROM srcTestTable LIMIT 1;
  277. SELECT longIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  278. SELECT longIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  279. SELECT longIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  280. SELECT longIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  281. SELECT longIn(null);
  282.  
  283. -- from * to float8
  284. DROP FUNCTION IF EXISTS doubleIn;
  285. CREATE FUNCTION doubleIn(float8) RETURNS float8
  286. AS 'select $1;'
  287. LANGUAGE SQL
  288. IMMUTABLE
  289. RETURNS NULL ON NULL INPUT;
  290.  
  291. SELECT doubleIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  292. SELECT doubleIn(intVal) FROM srcTestTable WHERE intVal = 1;
  293. SELECT doubleIn(longVal) FROM srcTestTable WHERE longVal = 1;
  294. SELECT doubleIn(floatVal) FROM srcTestTable WHERE floatVal < 1.1;
  295. SELECT doubleIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  296. SELECT doubleIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  297. SELECT doubleIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  298. SELECT doubleIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  299. SELECT doubleIn(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  300. SELECT doubleIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  301. SELECT doubleIn(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  302. SELECT doubleIn(binaryVal) FROM srcTestTable LIMIT 1;
  303. SELECT doubleIn(booleanVal) FROM srcTestTable LIMIT 1;
  304. SELECT doubleIn(stringVal) FROM srcTestTable LIMIT 1;
  305. SELECT doubleIn(dateVal) FROM srcTestTable LIMIT 1;
  306. SELECT doubleIn(timestampVal) FROM srcTestTable LIMIT 1;
  307. SELECT doubleIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  308. SELECT doubleIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  309. SELECT doubleIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  310. SELECT doubleIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  311. SELECT doubleIn(null);
  312.  
  313. -- from * to float4
  314. DROP FUNCTION IF EXISTS floatIn;
  315. CREATE FUNCTION floatIn(float4) RETURNS float4
  316. AS 'select $1;'
  317. LANGUAGE SQL
  318. IMMUTABLE
  319. RETURNS NULL ON NULL INPUT;
  320.  
  321. SELECT floatIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  322. SELECT floatIn(intVal) FROM srcTestTable WHERE intVal = 1;
  323. SELECT floatIn(longVal) FROM srcTestTable WHERE longVal = 1;
  324. SELECT floatIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  325. SELECT floatIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  326. SELECT floatIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  327. SELECT floatIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  328. SELECT floatIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  329. SELECT floatIn(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  330. SELECT floatIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  331. SELECT floatIn(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  332. SELECT floatIn(binaryVal) FROM srcTestTable LIMIT 1;
  333. SELECT floatIn(booleanVal) FROM srcTestTable LIMIT 1;
  334. SELECT floatIn(stringVal) FROM srcTestTable LIMIT 1;
  335. SELECT floatIn(dateVal) FROM srcTestTable LIMIT 1;
  336. SELECT floatIn(timestampVal) FROM srcTestTable LIMIT 1;
  337. SELECT floatIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  338. SELECT floatIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  339. SELECT floatIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  340. SELECT floatIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  341. SELECT floatIn(null);
  342.  
  343. -- from * to decimal(3, 0)
  344. DROP FUNCTION IF EXISTS decimal3_0In;
  345. CREATE FUNCTION decimal3_0In(decimal(3, 0)) RETURNS decimal(3, 0)
  346. AS 'select $1;'
  347. LANGUAGE SQL
  348. IMMUTABLE
  349. RETURNS NULL ON NULL INPUT;
  350.  
  351. SELECT decimal3_0In(shortVal) FROM srcTestTable WHERE shortVal = 1;
  352. SELECT decimal3_0In(intVal) FROM srcTestTable WHERE intVal = 1;
  353. SELECT decimal3_0In(longVal) FROM srcTestTable WHERE longVal = 1;
  354. SELECT decimal3_0In(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  355. SELECT decimal3_0In(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  356. SELECT decimal3_0In(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  357. SELECT decimal3_0In(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  358. SELECT decimal3_0In(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  359. SELECT decimal3_0In(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  360. SELECT decimal3_0In(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  361. SELECT decimal3_0In(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  362. SELECT decimal3_0In(binaryVal) FROM srcTestTable LIMIT 1;
  363. SELECT decimal3_0In(booleanVal) FROM srcTestTable LIMIT 1;
  364. SELECT decimal3_0In(stringVal) FROM srcTestTable LIMIT 1;
  365. SELECT decimal3_0In(dateVal) FROM srcTestTable LIMIT 1;
  366. SELECT decimal3_0In(timestampVal) FROM srcTestTable LIMIT 1;
  367. SELECT decimal3_0In(arrayIntVal) FROM srcTestTable LIMIT 1;
  368. SELECT decimal3_0In(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  369. SELECT decimal3_0In(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  370. SELECT decimal3_0In(structStringIntVal) FROM srcTestTable LIMIT 1;
  371. SELECT decimal3_0In(null);
  372.  
  373. -- from * to decimal(5, 0)
  374. DROP FUNCTION IF EXISTS decimal5_0In;
  375. CREATE FUNCTION decimal5_0In(decimal(5, 0)) RETURNS decimal(5, 0)
  376. AS 'select $1;'
  377. LANGUAGE SQL
  378. IMMUTABLE
  379. RETURNS NULL ON NULL INPUT;
  380.  
  381. SELECT decimal5_0In(shortVal) FROM srcTestTable WHERE shortVal = 1;
  382. SELECT decimal5_0In(intVal) FROM srcTestTable WHERE intVal = 1;
  383. SELECT decimal5_0In(longVal) FROM srcTestTable WHERE longVal = 1;
  384. SELECT decimal5_0In(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  385. SELECT decimal5_0In(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  386. SELECT decimal5_0In(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  387. SELECT decimal5_0In(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  388. SELECT decimal5_0In(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  389. SELECT decimal5_0In(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  390. SELECT decimal5_0In(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  391. SELECT decimal5_0In(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  392. SELECT decimal5_0In(binaryVal) FROM srcTestTable LIMIT 1;
  393. SELECT decimal5_0In(booleanVal) FROM srcTestTable LIMIT 1;
  394. SELECT decimal5_0In(stringVal) FROM srcTestTable LIMIT 1;
  395. SELECT decimal5_0In(dateVal) FROM srcTestTable LIMIT 1;
  396. SELECT decimal5_0In(timestampVal) FROM srcTestTable LIMIT 1;
  397. SELECT decimal5_0In(arrayIntVal) FROM srcTestTable LIMIT 1;
  398. SELECT decimal5_0In(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  399. SELECT decimal5_0In(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  400. SELECT decimal5_0In(structStringIntVal) FROM srcTestTable LIMIT 1;
  401. SELECT decimal5_0In(null);
  402.  
  403. -- from * to decimal(10, 0)
  404. DROP FUNCTION IF EXISTS decimal10_0In;
  405. CREATE FUNCTION decimal10_0In(decimal(10, 0)) RETURNS decimal(10, 0)
  406. AS 'select $1;'
  407. LANGUAGE SQL
  408. IMMUTABLE
  409. RETURNS NULL ON NULL INPUT;
  410.  
  411. SELECT decimal10_0In(shortVal) FROM srcTestTable WHERE shortVal = 1;
  412. SELECT decimal10_0In(intVal) FROM srcTestTable WHERE intVal = 1;
  413. SELECT decimal10_0In(longVal) FROM srcTestTable WHERE longVal = 1;
  414. SELECT decimal10_0In(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  415. SELECT decimal10_0In(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  416. SELECT decimal10_0In(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  417. SELECT decimal10_0In(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  418. SELECT decimal10_0In(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  419. SELECT decimal10_0In(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  420. SELECT decimal10_0In(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  421. SELECT decimal10_0In(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  422. SELECT decimal10_0In(binaryVal) FROM srcTestTable LIMIT 1;
  423. SELECT decimal10_0In(booleanVal) FROM srcTestTable LIMIT 1;
  424. SELECT decimal10_0In(stringVal) FROM srcTestTable LIMIT 1;
  425. SELECT decimal10_0In(dateVal) FROM srcTestTable LIMIT 1;
  426. SELECT decimal10_0In(timestampVal) FROM srcTestTable LIMIT 1;
  427. SELECT decimal10_0In(arrayIntVal) FROM srcTestTable LIMIT 1;
  428. SELECT decimal10_0In(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  429. SELECT decimal10_0In(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  430. SELECT decimal10_0In(structStringIntVal) FROM srcTestTable LIMIT 1;
  431. SELECT decimal10_0In(null);
  432.  
  433. -- from * to decimal(10, 2)
  434. DROP FUNCTION IF EXISTS decimal10_2In;
  435. CREATE FUNCTION decimal10_2In(decimal(10, 2)) RETURNS decimal(10, 2)
  436. AS 'select $1;'
  437. LANGUAGE SQL
  438. IMMUTABLE
  439. RETURNS NULL ON NULL INPUT;
  440.  
  441. SELECT decimal10_2In(shortVal) FROM srcTestTable WHERE shortVal = 1;
  442. SELECT decimal10_2In(intVal) FROM srcTestTable WHERE intVal = 1;
  443. SELECT decimal10_2In(longVal) FROM srcTestTable WHERE longVal = 1;
  444. SELECT decimal10_2In(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  445. SELECT decimal10_2In(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  446. SELECT decimal10_2In(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  447. SELECT decimal10_2In(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  448. SELECT decimal10_2In(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  449. SELECT decimal10_2In(decimal20_0Val) FROM srcTestTable WHERE decimal20_0Val = 1;
  450. SELECT decimal10_2In(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  451. SELECT decimal10_2In(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  452. SELECT decimal10_2In(binaryVal) FROM srcTestTable LIMIT 1;
  453. SELECT decimal10_2In(booleanVal) FROM srcTestTable LIMIT 1;
  454. SELECT decimal10_2In(stringVal) FROM srcTestTable LIMIT 1;
  455. SELECT decimal10_2In(dateVal) FROM srcTestTable LIMIT 1;
  456. SELECT decimal10_2In(timestampVal) FROM srcTestTable LIMIT 1;
  457. SELECT decimal10_2In(arrayIntVal) FROM srcTestTable LIMIT 1;
  458. SELECT decimal10_2In(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  459. SELECT decimal10_2In(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  460. SELECT decimal10_2In(structStringIntVal) FROM srcTestTable LIMIT 1;
  461. SELECT decimal10_2In(null);
  462.  
  463. -- from * to decimal(20, 0)
  464. DROP FUNCTION IF EXISTS decimal20_0In;
  465. CREATE FUNCTION decimal20_0In(decimal(20, 0)) RETURNS decimal(20, 0)
  466. AS 'select $1;'
  467. LANGUAGE SQL
  468. IMMUTABLE
  469. RETURNS NULL ON NULL INPUT;
  470.  
  471. SELECT decimal20_0In(shortVal) FROM srcTestTable WHERE shortVal = 1;
  472. SELECT decimal20_0In(intVal) FROM srcTestTable WHERE intVal = 1;
  473. SELECT decimal20_0In(longVal) FROM srcTestTable WHERE longVal = 1;
  474. SELECT decimal20_0In(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  475. SELECT decimal20_0In(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  476. SELECT decimal20_0In(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  477. SELECT decimal20_0In(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  478. SELECT decimal20_0In(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  479. SELECT decimal20_0In(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  480. SELECT decimal20_0In(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  481. SELECT decimal20_0In(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  482. SELECT decimal20_0In(binaryVal) FROM srcTestTable LIMIT 1;
  483. SELECT decimal20_0In(booleanVal) FROM srcTestTable LIMIT 1;
  484. SELECT decimal20_0In(stringVal) FROM srcTestTable LIMIT 1;
  485. SELECT decimal20_0In(dateVal) FROM srcTestTable LIMIT 1;
  486. SELECT decimal20_0In(timestampVal) FROM srcTestTable LIMIT 1;
  487. SELECT decimal20_0In(arrayIntVal) FROM srcTestTable LIMIT 1;
  488. SELECT decimal20_0In(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  489. SELECT decimal20_0In(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  490. SELECT decimal20_0In(structStringIntVal) FROM srcTestTable LIMIT 1;
  491. SELECT decimal20_0In(null);
  492.  
  493. -- from * to decimal(30, 15)
  494. DROP FUNCTION IF EXISTS decimal30_15In;
  495. CREATE FUNCTION decimal30_15In(decimal(30, 15)) RETURNS decimal(30, 15)
  496. AS 'select $1;'
  497. LANGUAGE SQL
  498. IMMUTABLE
  499. RETURNS NULL ON NULL INPUT;
  500.  
  501. SELECT decimal30_15In(shortVal) FROM srcTestTable WHERE shortVal = 1;
  502. SELECT decimal30_15In(intVal) FROM srcTestTable WHERE intVal = 1;
  503. SELECT decimal30_15In(longVal) FROM srcTestTable WHERE longVal = 1;
  504. SELECT decimal30_15In(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  505. SELECT decimal30_15In(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  506. SELECT decimal30_15In(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  507. SELECT decimal30_15In(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  508. SELECT decimal30_15In(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  509. SELECT decimal30_15In(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  510. SELECT decimal30_15In(decimal14_7Val) FROM srcTestTable WHERE decimal14_7Val = 1;
  511. SELECT decimal30_15In(binaryVal) FROM srcTestTable LIMIT 1;
  512. SELECT decimal30_15In(booleanVal) FROM srcTestTable LIMIT 1;
  513. SELECT decimal30_15In(stringVal) FROM srcTestTable LIMIT 1;
  514. SELECT decimal30_15In(dateVal) FROM srcTestTable LIMIT 1;
  515. SELECT decimal30_15In(timestampVal) FROM srcTestTable LIMIT 1;
  516. SELECT decimal30_15In(arrayIntVal) FROM srcTestTable LIMIT 1;
  517. SELECT decimal30_15In(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  518. SELECT decimal30_15In(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  519. SELECT decimal30_15In(structStringIntVal) FROM srcTestTable LIMIT 1;
  520. SELECT decimal30_15In(null);
  521.  
  522. -- from * to decimal(14, 7)
  523. DROP FUNCTION IF EXISTS decimal14_7In;
  524. CREATE FUNCTION decimal14_7In(decimal(14, 7)) RETURNS decimal(14, 7)
  525. AS 'select $1;'
  526. LANGUAGE SQL
  527. IMMUTABLE
  528. RETURNS NULL ON NULL INPUT;
  529.  
  530. SELECT decimal14_7In(shortVal) FROM srcTestTable WHERE shortVal = 1;
  531. SELECT decimal14_7In(intVal) FROM srcTestTable WHERE intVal = 1;
  532. SELECT decimal14_7In(longVal) FROM srcTestTable WHERE longVal = 1;
  533. SELECT decimal14_7In(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  534. SELECT decimal14_7In(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  535. SELECT decimal14_7In(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  536. SELECT decimal14_7In(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  537. SELECT decimal14_7In(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  538. SELECT decimal14_7In(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  539. SELECT decimal14_7In(binaryVal) FROM srcTestTable LIMIT 1;
  540. SELECT decimal14_7In(booleanVal) FROM srcTestTable LIMIT 1;
  541. SELECT decimal14_7In(stringVal) FROM srcTestTable LIMIT 1;
  542. SELECT decimal14_7In(dateVal) FROM srcTestTable LIMIT 1;
  543. SELECT decimal14_7In(timestampVal) FROM srcTestTable LIMIT 1;
  544. SELECT decimal14_7In(arrayIntVal) FROM srcTestTable LIMIT 1;
  545. SELECT decimal14_7In(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  546. SELECT decimal14_7In(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  547. SELECT decimal14_7In(structStringIntVal) FROM srcTestTable LIMIT 1;
  548. SELECT decimal14_7In(null);
  549.  
  550. -- from * to binary
  551. DROP FUNCTION IF EXISTS binaryIn;
  552. CREATE FUNCTION binaryIn(bytea) RETURNS bytea
  553. AS 'select $1;'
  554. LANGUAGE SQL
  555. IMMUTABLE
  556. RETURNS NULL ON NULL INPUT;
  557.  
  558. SELECT binaryIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  559. SELECT binaryIn(intVal) FROM srcTestTable WHERE intVal = 1;
  560. SELECT binaryIn(longVal) FROM srcTestTable WHERE longVal = 1;
  561. SELECT binaryIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  562. SELECT binaryIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  563. SELECT binaryIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  564. SELECT binaryIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  565. SELECT binaryIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  566. SELECT binaryIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  567. SELECT binaryIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  568. SELECT binaryIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  569. SELECT binaryIn(booleanVal) FROM srcTestTable LIMIT 1;
  570. SELECT binaryIn(stringVal) FROM srcTestTable LIMIT 1;
  571. SELECT binaryIn(dateVal) FROM srcTestTable LIMIT 1;
  572. SELECT binaryIn(timestampVal) FROM srcTestTable LIMIT 1;
  573. SELECT binaryIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  574. SELECT binaryIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  575. SELECT binaryIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  576. SELECT binaryIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  577. SELECT binaryIn(null);
  578.  
  579. -- from * to boolean
  580. DROP FUNCTION IF EXISTS booleanIn;
  581. CREATE FUNCTION booleanIn(boolean) RETURNS boolean
  582. AS 'select $1;'
  583. LANGUAGE SQL
  584. IMMUTABLE
  585. RETURNS NULL ON NULL INPUT;
  586.  
  587. SELECT booleanIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  588. SELECT booleanIn(intVal) FROM srcTestTable WHERE intVal = 1;
  589. SELECT booleanIn(longVal) FROM srcTestTable WHERE longVal = 1;
  590. SELECT booleanIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  591. SELECT booleanIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  592. SELECT booleanIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  593. SELECT booleanIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  594. SELECT booleanIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  595. SELECT booleanIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  596. SELECT booleanIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  597. SELECT booleanIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  598. SELECT booleanIn(binaryVal) FROM srcTestTable LIMIT 1;
  599. SELECT booleanIn(stringVal) FROM srcTestTable LIMIT 1;
  600. SELECT booleanIn(dateVal) FROM srcTestTable LIMIT 1;
  601. SELECT booleanIn(timestampVal) FROM srcTestTable LIMIT 1;
  602. SELECT booleanIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  603. SELECT booleanIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  604. SELECT booleanIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  605. SELECT booleanIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  606. SELECT booleanIn(null);
  607.  
  608. -- from * to string
  609. DROP FUNCTION IF EXISTS stringIn;
  610. CREATE FUNCTION stringIn(text) RETURNS text
  611. AS 'select $1;'
  612. LANGUAGE SQL
  613. IMMUTABLE
  614. RETURNS NULL ON NULL INPUT;
  615.  
  616. SELECT stringIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  617. SELECT stringIn(intVal) FROM srcTestTable WHERE intVal = 1;
  618. SELECT stringIn(longVal) FROM srcTestTable WHERE longVal = 1;
  619. SELECT stringIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  620. SELECT stringIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  621. SELECT stringIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  622. SELECT stringIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  623. SELECT stringIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  624. SELECT stringIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  625. SELECT stringIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  626. SELECT stringIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  627. SELECT stringIn(binaryVal) FROM srcTestTable LIMIT 1;
  628. SELECT stringIn(booleanVal) FROM srcTestTable LIMIT 1;
  629. SELECT stringIn(dateVal) FROM srcTestTable LIMIT 1;
  630. SELECT stringIn(timestampVal) FROM srcTestTable LIMIT 1;
  631. SELECT stringIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  632. SELECT stringIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  633. SELECT stringIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  634. SELECT stringIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  635. SELECT stringIn(null);
  636.  
  637. -- from * to date
  638. DROP FUNCTION IF EXISTS dateIn;
  639. CREATE FUNCTION dateIn(date) RETURNS date
  640. AS 'select $1;'
  641. LANGUAGE SQL
  642. IMMUTABLE
  643. RETURNS NULL ON NULL INPUT;
  644.  
  645. SELECT dateIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  646. SELECT dateIn(intVal) FROM srcTestTable WHERE intVal = 1;
  647. SELECT dateIn(longVal) FROM srcTestTable WHERE longVal = 1;
  648. SELECT dateIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  649. SELECT dateIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  650. SELECT dateIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  651. SELECT dateIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  652. SELECT dateIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  653. SELECT dateIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  654. SELECT dateIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  655. SELECT dateIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  656. SELECT dateIn(binaryVal) FROM srcTestTable LIMIT 1;
  657. SELECT dateIn(booleanVal) FROM srcTestTable LIMIT 1;
  658. SELECT dateIn(stringVal) FROM srcTestTable LIMIT 1;
  659. SELECT dateIn(timestampVal) FROM srcTestTable LIMIT 1;
  660. SELECT dateIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  661. SELECT dateIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  662. SELECT dateIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  663. SELECT dateIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  664. SELECT dateIn(null);
  665.  
  666. -- from * to timestamp
  667. DROP FUNCTION IF EXISTS timestampIn;
  668. CREATE FUNCTION timestampIn(timestamp) RETURNS timestamp
  669. AS 'select $1;'
  670. LANGUAGE SQL
  671. IMMUTABLE
  672. RETURNS NULL ON NULL INPUT;
  673.  
  674. SELECT timestampIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  675. SELECT timestampIn(intVal) FROM srcTestTable WHERE intVal = 1;
  676. SELECT timestampIn(longVal) FROM srcTestTable WHERE longVal = 1;
  677. SELECT timestampIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  678. SELECT timestampIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  679. SELECT timestampIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  680. SELECT timestampIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  681. SELECT timestampIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  682. SELECT timestampIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  683. SELECT timestampIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  684. SELECT timestampIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  685. SELECT timestampIn(binaryVal) FROM srcTestTable LIMIT 1;
  686. SELECT timestampIn(booleanVal) FROM srcTestTable LIMIT 1;
  687. SELECT timestampIn(stringVal) FROM srcTestTable LIMIT 1;
  688. SELECT timestampIn(dateVal) FROM srcTestTable LIMIT 1;
  689. SELECT timestampIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  690. SELECT timestampIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  691. SELECT timestampIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  692. SELECT timestampIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  693. SELECT timestampIn(null);
  694.  
  695. -- from * to int[]
  696. DROP FUNCTION IF EXISTS arrayIntIn;
  697. CREATE FUNCTION arrayIntIn(int[]) RETURNS int[]
  698. AS 'select $1;'
  699. LANGUAGE SQL
  700. IMMUTABLE
  701. RETURNS NULL ON NULL INPUT;
  702.  
  703. SELECT arrayIntIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  704. SELECT arrayIntIn(intVal) FROM srcTestTable WHERE intVal = 1;
  705. SELECT arrayIntIn(longVal) FROM srcTestTable WHERE longVal = 1;
  706. SELECT arrayIntIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  707. SELECT arrayIntIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  708. SELECT arrayIntIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  709. SELECT arrayIntIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  710. SELECT arrayIntIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  711. SELECT arrayIntIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  712. SELECT arrayIntIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  713. SELECT arrayIntIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  714. SELECT arrayIntIn(binaryVal) FROM srcTestTable LIMIT 1;
  715. SELECT arrayIntIn(booleanVal) FROM srcTestTable LIMIT 1;
  716. SELECT arrayIntIn(stringVal) FROM srcTestTable LIMIT 1;
  717. SELECT arrayIntIn(dateVal) FROM srcTestTable LIMIT 1;
  718. SELECT arrayIntIn(timestampVal) FROM srcTestTable LIMIT 1;
  719. SELECT arrayIntIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  720. SELECT arrayIntIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  721. SELECT arrayIntIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  722. SELECT arrayIntIn(null);
  723.  
  724. -- from * to float8[]
  725. DROP FUNCTION IF EXISTS arrayDoubleIn;
  726. CREATE FUNCTION arrayDoubleIn(float8[]) RETURNS float8[]
  727. AS 'select $1;'
  728. LANGUAGE SQL
  729. IMMUTABLE
  730. RETURNS NULL ON NULL INPUT;
  731.  
  732. SELECT arrayDoubleIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  733. SELECT arrayDoubleIn(intVal) FROM srcTestTable WHERE intVal = 1;
  734. SELECT arrayDoubleIn(longVal) FROM srcTestTable WHERE longVal = 1;
  735. SELECT arrayDoubleIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  736. SELECT arrayDoubleIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  737. SELECT arrayDoubleIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  738. SELECT arrayDoubleIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  739. SELECT arrayDoubleIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  740. SELECT arrayDoubleIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  741. SELECT arrayDoubleIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  742. SELECT arrayDoubleIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  743. SELECT arrayDoubleIn(binaryVal) FROM srcTestTable LIMIT 1;
  744. SELECT arrayDoubleIn(booleanVal) FROM srcTestTable LIMIT 1;
  745. SELECT arrayDoubleIn(stringVal) FROM srcTestTable LIMIT 1;
  746. SELECT arrayDoubleIn(dateVal) FROM srcTestTable LIMIT 1;
  747. SELECT arrayDoubleIn(timestampVal) FROM srcTestTable LIMIT 1;
  748. SELECT arrayDoubleIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  749. SELECT arrayDoubleIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  750. SELECT arrayDoubleIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  751. SELECT arrayDoubleIn(null);
  752.  
  753. -- from * to structIntDoubleTy
  754. DROP FUNCTION IF EXISTS structIntDoubleIn;
  755. CREATE FUNCTION structIntDoubleIn(structIntDoubleTy) RETURNS structIntDoubleTy
  756. AS 'select $1;'
  757. LANGUAGE SQL
  758. IMMUTABLE
  759. RETURNS NULL ON NULL INPUT;
  760.  
  761. SELECT structIntDoubleIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  762. SELECT structIntDoubleIn(intVal) FROM srcTestTable WHERE intVal = 1;
  763. SELECT structIntDoubleIn(longVal) FROM srcTestTable WHERE longVal = 1;
  764. SELECT structIntDoubleIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  765. SELECT structIntDoubleIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  766. SELECT structIntDoubleIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  767. SELECT structIntDoubleIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  768. SELECT structIntDoubleIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  769. SELECT structIntDoubleIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  770. SELECT structIntDoubleIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  771. SELECT structIntDoubleIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  772. SELECT structIntDoubleIn(binaryVal) FROM srcTestTable LIMIT 1;
  773. SELECT structIntDoubleIn(booleanVal) FROM srcTestTable LIMIT 1;
  774. SELECT structIntDoubleIn(stringVal) FROM srcTestTable LIMIT 1;
  775. SELECT structIntDoubleIn(dateVal) FROM srcTestTable LIMIT 1;
  776. SELECT structIntDoubleIn(timestampVal) FROM srcTestTable LIMIT 1;
  777. SELECT structIntDoubleIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  778. SELECT structIntDoubleIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  779. SELECT structIntDoubleIn(structStringIntVal) FROM srcTestTable LIMIT 1;
  780. SELECT structIntDoubleIn(null);
  781.  
  782. -- from * to structStringIntTy
  783. DROP FUNCTION IF EXISTS structStringIntIn;
  784. CREATE FUNCTION structStringIntIn(structStringIntTy) RETURNS structStringIntTy
  785. AS 'select $1;'
  786. LANGUAGE SQL
  787. IMMUTABLE
  788. RETURNS NULL ON NULL INPUT;
  789.  
  790. SELECT structStringIntIn(shortVal) FROM srcTestTable WHERE shortVal = 1;
  791. SELECT structStringIntIn(intVal) FROM srcTestTable WHERE intVal = 1;
  792. SELECT structStringIntIn(longVal) FROM srcTestTable WHERE longVal = 1;
  793. SELECT structStringIntIn(doubleVal) FROM srcTestTable WHERE doubleVal < 1.1;
  794. SELECT structStringIntIn(floatVal) FROM srcTestTable WHERE floatVal< 1.1;
  795. SELECT structStringIntIn(decimal3_0Val) FROM srcTestTable WHERE decimal3_0Val = 1;
  796. SELECT structStringIntIn(decimal5_0Val) FROM srcTestTable WHERE decimal5_0Val = 1;
  797. SELECT structStringIntIn(decimal10_0Val) FROM srcTestTable WHERE decimal10_0Val = 1;
  798. SELECT structStringIntIn(decimal10_2Val) FROM srcTestTable WHERE decimal10_2Val = 1;
  799. SELECT structStringIntIn(decimal30_15Val) FROM srcTestTable WHERE decimal30_15Val = 1;
  800. SELECT structStringIntIn(decimal14_7In) FROM srcTestTable WHERE decimal30_15Val = 1;
  801. SELECT structStringIntIn(binaryVal) FROM srcTestTable LIMIT 1;
  802. SELECT structStringIntIn(booleanVal) FROM srcTestTable LIMIT 1;
  803. SELECT structStringIntIn(stringVal) FROM srcTestTable LIMIT 1;
  804. SELECT structStringIntIn(dateVal) FROM srcTestTable LIMIT 1;
  805. SELECT structStringIntIn(timestampVal) FROM srcTestTable LIMIT 1;
  806. SELECT structStringIntIn(arrayIntVal) FROM srcTestTable LIMIT 1;
  807. SELECT structStringIntIn(arrayDoubleVal) FROM srcTestTable LIMIT 1;
  808. SELECT structStringIntIn(structIntDoubleVal) FROM srcTestTable LIMIT 1;
  809. SELECT structStringIntIn(null);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement