boot912.sql 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002
  1. { ************************************************************************* }
  2. { }
  3. { Licensed Materials - Property of IBM and/or HCL }
  4. { }
  5. { IBM Informix Dynamic Server }
  6. { (c) Copyright IBM Corporation 1996, 2004 All rights reserved. }
  7. { (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved. }
  8. { }
  9. { ************************************************************************* }
  10. { }
  11. { Title: boot912.sql }
  12. { }
  13. { Description: }
  14. { Bootstrapping script for a 9.12 database, run during database }
  15. { construction. }
  16. { }
  17. { ************************************************************************* }
  18. { }
  19. { ** IMPORTANT - PLEASE READ }
  20. { }
  21. { All types and routines referenced in this file must be prefixed }
  22. { with the user name "informix". E.g., use "informix.boolean" }
  23. { and not "boolean" }
  24. { }
  25. { ************************************************************************* }
  26. { Danish locale (da_dk.ISO-7-Danish) seems to be unique in that it contains }
  27. { no [,], { or } character at all. That is why we avoid using these }
  28. { characters. User should not use subscript operators and change it to }
  29. { substr function. }
  30. { ************************************************************************* }
  31. { Any changes made to this file in 9.20 or later releases will most likely }
  32. { have an impact on database conversion/reversion. So avoid making changes }
  33. { within this file and possibly add new SQL statements in newer boot }
  34. { scripts to achieve your task. }
  35. { ************************************************************************* }
  36. -- Add sysdomains view during database construction
  37. create view informix.sysdomains (id, owner, name, type) as
  38. select extended_id, owner, name, type from informix.sysxtdtypes
  39. where domain = 'D';
  40. grant select on informix.sysdomains to public as informix;
  41. -- Create user predefined data types
  42. create opaque type informix.lvarchar
  43. (
  44. internallength=variable,
  45. alignment = 1,
  46. maxlen = 32739
  47. );
  48. create opaque type informix.sendrecv
  49. (
  50. internallength=variable,
  51. alignment = 1,
  52. maxlen = 2048,
  53. cannothash
  54. );
  55. create opaque type informix.impexp
  56. (
  57. internallength=variable,
  58. alignment = 1,
  59. maxlen = 2048,
  60. cannothash
  61. );
  62. create opaque type informix.impexpbin
  63. (
  64. internallength=variable,
  65. alignment = 1,
  66. maxlen = 2048,
  67. cannothash
  68. );
  69. create opaque type informix.boolean
  70. (
  71. internallength=1,
  72. alignment = 1,
  73. passedbyvalue
  74. );
  75. create opaque type informix.pointer
  76. (
  77. internallength=8,
  78. alignment = 8,
  79. passedbyvalue
  80. );
  81. create opaque type informix.indexkeyarray
  82. (
  83. internallength=variable,
  84. alignment = 4,
  85. maxlen = 1024,
  86. cannothash
  87. );
  88. -- Let us create the output function for this. We do not need an input function
  89. create dba function informix.indexkeyarray_out(informix.indexkeyarray)
  90. returning informix.lvarchar
  91. external name '(indexkeyarray_out)' language C
  92. not variant;
  93. grant execute on function informix.indexkeyarray_out(informix.indexkeyarray) to public as informix ;
  94. create dba function informix.indexkeyarray_send(informix.indexkeyarray)
  95. returning informix.sendrecv
  96. external name '(indexkeyarray_send)' language C
  97. not variant;
  98. grant execute on function informix.indexkeyarray_send(informix.indexkeyarray) to public as informix ;
  99. create explicit cast (informix.indexkeyarray as informix.lvarchar
  100. with informix.indexkeyarray_out);
  101. create explicit cast (informix.indexkeyarray as informix.sendrecv
  102. with informix.indexkeyarray_send);
  103. -- Used to create the sysindexes view definition
  104. create dba function informix.ikeyextractcolno(informix.indexkeyarray, integer)
  105. returning smallint
  106. external name '(ikeyextractcolno)' language C
  107. not variant;
  108. grant execute on function informix.ikeyextractcolno(informix.indexkeyarray, integer) to public as informix ;
  109. -- Default opclass for btrees: btree_ops
  110. create opclass informix.btree_ops for btree
  111. strategies (lessthan, lessthanorequal, equal, greaterthanorequal, greaterthan)
  112. support (compare);
  113. create opaque type informix.rtnparamtypes
  114. (
  115. internallength=variable,
  116. alignment = 1,
  117. maxlen = 4096,
  118. cannothash
  119. );
  120. -- Let us create the output function for this. We do not need an input function
  121. create dba function informix.rtn_param_out(informix.rtnparamtypes)
  122. returning informix.lvarchar specific paramtypes_out
  123. external name '(rtn_param_out)' language C
  124. not variant;
  125. grant execute on function informix.rtn_param_out(informix.rtnparamtypes) to public as informix ;
  126. create cast (informix.rtnparamtypes as informix.lvarchar with informix.rtn_param_out);
  127. { ifx_param_ids, ifx_ret_ids, ifx_param_types, ifx_ret_types }
  128. { functions to display the type identifiers or names of the }
  129. { parameters and return types of routines. integer argument }
  130. { is the procid, e.g. select ifx_ret_ids(procid) from sysprocedures; }
  131. create dba function informix.ifx_param_ids(integer)
  132. returning informix.lvarchar
  133. external name '(spr_param_ids)' language c;
  134. grant execute on function informix.ifx_param_ids(integer) to public as informix ;
  135. create dba function informix.ifx_ret_ids(integer)
  136. returning informix.lvarchar
  137. external name '(spr_ret_ids)' language c;
  138. grant execute on function informix.ifx_ret_ids(integer) to public as informix ;
  139. create dba function informix.ifx_param_types(integer)
  140. returning informix.lvarchar
  141. external name '(spr_param_types)' language c;
  142. grant execute on function informix.ifx_param_types(integer) to public as informix ;
  143. create dba function informix.ifx_ret_types(integer)
  144. returning informix.lvarchar
  145. external name '(spr_ret_types)' language c;
  146. grant execute on function informix.ifx_ret_types(integer) to public as informix ;
  147. create opaque type informix.selfuncargs
  148. (
  149. internallength=24,
  150. alignment = 1,
  151. cannothash
  152. );
  153. create opaque type informix.blob
  154. (
  155. internallength=72,
  156. alignment = 4,
  157. cannothash
  158. );
  159. create opaque type informix.clob
  160. (
  161. internallength=72,
  162. alignment = 4,
  163. cannothash
  164. );
  165. create opaque type informix.lolist
  166. (
  167. internallength=variable,
  168. alignment = 4,
  169. maxlen = 2048,
  170. cannothash
  171. );
  172. -- lolist function and cast definitions
  173. create dba function informix.lolist_in(informix.lvarchar)
  174. returns informix.lolist
  175. external name '(lolist_in)'
  176. language C not variant;
  177. grant execute on function informix.lolist_in(informix.lvarchar) to public as informix ;
  178. create dba function informix.lolist_out(informix.lolist)
  179. returns informix.lvarchar
  180. external name '(lolist_out)'
  181. language C not variant;
  182. grant execute on function informix.lolist_out(informix.lolist) to public as informix ;
  183. create dba function informix.lolist_send(informix.lolist)
  184. returns informix.sendrecv
  185. external name '(lolist_send)'
  186. language C not variant;
  187. grant execute on function informix.lolist_send(informix.lolist) to public as informix ;
  188. create dba function informix.lolist_recv(informix.sendrecv)
  189. returns informix.lolist
  190. external name '(lolist_recv)'
  191. language C not variant;
  192. grant execute on function informix.lolist_recv(informix.sendrecv) to public as informix ;
  193. create implicit cast (informix.lvarchar as informix.lolist with
  194. informix.lolist_in);
  195. create explicit cast (informix.lolist as informix.lvarchar with
  196. informix.lolist_out);
  197. create implicit cast (informix.sendrecv as informix.lolist with
  198. informix.lolist_recv);
  199. create explicit cast (informix.lolist as informix.sendrecv with
  200. informix.lolist_send);
  201. -- cast function definitions
  202. create dba function informix.collcast(set) returns set
  203. external name '(collcast)' language C not variant;
  204. create dba function informix.collcast(multiset) returns multiset
  205. external name '(collcast)' language C not variant;
  206. create dba function informix.collcast(list) returns list
  207. external name '(collcast)' language C not variant;
  208. create dba function informix.rowcast(row) returns row
  209. external name '(rowcast)' language C not variant;
  210. grant execute on function informix.collcast(set) to public as informix;
  211. grant execute on function informix.collcast(multiset) to public as informix;
  212. grant execute on function informix.collcast(list) to public as informix;
  213. grant execute on function informix.rowcast(row) to public as informix;
  214. -- Collection function definitions
  215. create dba function informix.collectionoutput(set) returns informix.lvarchar
  216. external name '(collectionoutput)' language C not variant;
  217. create dba function informix.collectionoutput(multiset) returns informix.lvarchar
  218. external name '(collectionoutput)' language C not variant;
  219. create dba function informix.collectionoutput(list) returns informix.lvarchar
  220. external name '(collectionoutput)' language C not variant;
  221. create dba function informix.collectioninput(informix.lvarchar) returns set
  222. external name '(collectioninput)' language C not variant;
  223. grant execute on function informix.collectionoutput(set) to public as informix;
  224. grant execute on function informix.collectionoutput(multiset) to public as informix;
  225. grant execute on function informix.collectionoutput(list) to public as informix;
  226. grant execute on function informix.collectioninput(informix.lvarchar) to public as informix;
  227. -- Send/recv Collection Functions
  228. create dba function informix.collectionrecv(informix.sendrecv) returns set
  229. external name '(collectionrecv)' language C not variant;
  230. grant execute on function informix.collectionrecv(informix.sendrecv) to public as informix ;
  231. -- Row Functions
  232. create dba function informix.rowoutput(row) returns informix.lvarchar
  233. external name '(rowoutput)' language C not variant;
  234. create dba function informix.rowinput(informix.lvarchar) returns row
  235. external name '(rowinput)' language C not variant;
  236. create dba function informix.rowrecv(informix.sendrecv) returns row
  237. external name '(rowrecv)' language C not variant;
  238. create dba function informix.rowsend(row) returns informix.sendrecv
  239. external name '(rowsend)' language C not variant;
  240. create dba function informix.assign(row) returns row
  241. external name '(rowassign)' language C not variant;
  242. create dba function informix.destroy(row) returns row
  243. external name '(rowdestroy)' language C not variant;
  244. create dba function informix.assign(set) returns set
  245. external name '(collectionassign)' language C not variant;
  246. create dba function informix.assign(multiset) returns multiset
  247. external name '(collectionassign)' language C not variant;
  248. create dba function informix.assign(list) returns list
  249. external name '(collectionassign)' language C not variant;
  250. create dba function informix.destroy(set) returns set
  251. external name '(collectiondestroy)' language C not variant;
  252. create dba function informix.destroy(multiset) returns multiset
  253. external name '(collectiondestroy)' language C not variant;
  254. create dba function informix.destroy(list) returns list
  255. external name '(collectiondestroy)' language C not variant;
  256. grant execute on function informix.rowoutput(row) to public as informix;
  257. grant execute on function informix.rowinput(informix.lvarchar) to public as informix;
  258. grant execute on function informix.rowrecv(informix.sendrecv) to public as informix;
  259. grant execute on function informix.rowsend(row) to public as informix;
  260. grant execute on function informix.assign(row) to public as informix;
  261. grant execute on function informix.destroy(row) to public as informix;
  262. grant execute on function informix.assign(set) to public as informix;
  263. grant execute on function informix.assign(multiset) to public as informix;
  264. grant execute on function informix.assign(list) to public as informix;
  265. grant execute on function informix.destroy(set) to public as informix;
  266. grant execute on function informix.destroy(multiset) to public as informix;
  267. grant execute on function informix.destroy(list) to public as informix;
  268. -- blob and clob support functions with informix.their associated casts
  269. create dba function informix.blobinput(informix.lvarchar) returns informix.blob
  270. external name '(blob_input)'
  271. language c not variant;
  272. grant execute on function informix.blobinput(informix.lvarchar) to public as informix;
  273. create dba function informix.clobinput(informix.lvarchar) returns informix.clob
  274. external name '(clob_input)'
  275. language c not variant;
  276. grant execute on function informix.clobinput(informix.lvarchar) to public as informix;
  277. create implicit cast (informix.lvarchar as informix.blob with
  278. informix.blobinput);
  279. create implicit cast (informix.lvarchar as informix.clob with
  280. informix.clobinput);
  281. create dba function informix.bloboutput(informix.blob) returns informix.lvarchar
  282. external name '(blob_output)'
  283. language c not variant;
  284. grant execute on function informix.bloboutput(informix.blob) to public as informix;
  285. create dba function informix.cloboutput(informix.clob) returns informix.lvarchar
  286. external name '(clob_output)'
  287. language c not variant;
  288. grant execute on function informix.cloboutput(informix.clob) to public as informix;
  289. create explicit cast (informix.blob as informix.lvarchar with
  290. informix.bloboutput);
  291. create explicit cast (informix.clob as informix.lvarchar with
  292. informix.cloboutput);
  293. create dba function informix.blobrecv(informix.sendrecv)
  294. returns informix.blob
  295. external name '(blob_recv)'
  296. language c not variant;
  297. grant execute on function informix.blobrecv(informix.sendrecv) to public as informix;
  298. create dba function informix.clobrecv(informix.sendrecv)
  299. returns informix.clob
  300. external name '(clob_recv)'
  301. language c not variant;
  302. grant execute on function informix.clobrecv(informix.sendrecv) to public as informix;
  303. create implicit cast (informix.sendrecv as informix.blob with
  304. informix.blobrecv);
  305. create implicit cast (informix.sendrecv as informix.clob with
  306. informix.clobrecv);
  307. create dba function informix.blobsend(informix.blob) returns informix.sendrecv
  308. external name '(blob_send)'
  309. language c not variant;
  310. grant execute on function informix.blobsend(informix.blob) to public as informix;
  311. create dba function informix.clobsend(informix.clob) returns informix.sendrecv
  312. external name '(clob_send)'
  313. language c not variant;
  314. grant execute on function informix.clobsend(informix.clob) to public as informix ;
  315. create implicit cast (informix.blob as informix.sendrecv with
  316. informix.blobsend);
  317. create implicit cast (informix.clob as informix.sendrecv with
  318. informix.clobsend);
  319. create dba function informix.blobimport(informix.impexp)
  320. returns informix.blob
  321. external name '(blob_import)'
  322. language c not variant;
  323. grant execute on function informix.blobimport(informix.impexp) to public as informix ;
  324. create dba function informix.clobimport(informix.impexp)
  325. returns informix.clob
  326. external name '(clob_import)'
  327. language c not variant;
  328. grant execute on function informix.clobimport(informix.impexp) to public as informix ;
  329. create implicit cast (informix.impexp as informix.blob with
  330. informix.blobimport);
  331. create implicit cast (informix.impexp as informix.clob with
  332. informix.clobimport);
  333. create dba function informix.blobexport(informix.blob)
  334. returns informix.impexp
  335. external name '(blob_export)'
  336. language c not variant;
  337. grant execute on function informix.blobexport(informix.blob) to public as informix ;
  338. create dba function informix.clobexport(informix.clob)
  339. returns informix.impexp
  340. external name '(clob_export)'
  341. language c not variant;
  342. grant execute on function informix.clobexport(informix.clob) to public as informix ;
  343. create implicit cast (informix.blob as informix.impexp with
  344. informix.blobexport);
  345. create implicit cast (informix.clob as informix.impexp with
  346. informix.clobexport);
  347. create dba function informix.assign(informix.blob)
  348. returns informix.blob
  349. external name '(blob_assign)'
  350. language c not variant;
  351. grant execute on function informix.assign(informix.blob) to public as informix ;
  352. create dba function informix.assign(informix.clob)
  353. returns informix.clob
  354. external name '(clob_assign)'
  355. language c not variant;
  356. grant execute on function informix.assign(informix.clob) to public as informix ;
  357. create dba function informix.destroy(informix.blob)
  358. returns informix.blob
  359. external name '(blob_destroy)'
  360. language c not variant;
  361. grant execute on function informix.destroy(informix.blob) to public as informix ;
  362. create dba function informix.destroy(informix.clob)
  363. returns informix.clob
  364. external name '(clob_destroy)'
  365. language c not variant;
  366. grant execute on function informix.destroy(informix.clob) to public as informix ;
  367. create dba function informix.lohandles(informix.blob)
  368. returns informix.lolist
  369. external name '(blob_handles)'
  370. language c not variant;
  371. grant execute on function informix.lohandles(informix.blob) to public as informix ;
  372. create dba function informix.lohandles(informix.clob)
  373. returns informix.lvarchar
  374. external name '(blob_handles)'
  375. language c not variant;
  376. grant execute on function informix.lohandles(informix.clob) to public as informix ;
  377. -- blob and clob user functions
  378. create dba function informix.filetoblob(informix.lvarchar, char(6))
  379. returns informix.blob
  380. external name '(blob_from_file)'
  381. language c variant;
  382. grant execute on function informix.filetoblob(informix.lvarchar, char(6)) to public as informix ;
  383. create dba function informix.filetoclob(informix.lvarchar, char(6))
  384. returns informix.clob
  385. external name '(blob_from_file)' -- yes blob_from_file
  386. language c variant;
  387. grant execute on function informix.filetoclob(informix.lvarchar, char(6)) to public as informix ;
  388. create dba function informix.filetoblob(informix.lvarchar, char(6), char(18), char(18))
  389. returns informix.blob
  390. external name '(blob_from_file_colspec)'
  391. language c variant;
  392. grant execute on function informix.filetoblob(informix.lvarchar, char(6), char(18), char(18)) to public as informix ;
  393. create dba function informix.filetoclob(informix.lvarchar, char(6), char(18), char(18))
  394. returns informix.clob
  395. external name '(blob_from_file_colspec)'
  396. language c variant;
  397. grant execute on function informix.filetoclob(informix.lvarchar, char(6), char(18), char(18)) to public as informix ;
  398. create dba function informix.lotofile(informix.blob, informix.lvarchar, char(6)) returns informix.lvarchar
  399. external name '(blob_to_file)'
  400. language c variant;
  401. grant execute on function informix.lotofile(informix.blob, informix.lvarchar, char(6)) to public as informix ;
  402. create dba function informix.lotofile(clob, informix.lvarchar, char(6)) returns informix.lvarchar
  403. external name '(blob_to_file)'
  404. language c variant;
  405. grant execute on function informix.lotofile(clob, informix.lvarchar, char(6)) to public as informix ;
  406. create dba function informix.locopy(informix.blob)
  407. returns informix.blob
  408. external name '(blob_copy)'
  409. language c variant;
  410. grant execute on function informix.locopy(informix.blob) to public as informix ;
  411. create dba function informix.locopy(informix.blob, char(18), char(18))
  412. returns informix.blob
  413. external name '(blob_copy_colspec)'
  414. language c variant;
  415. grant execute on function informix.locopy(informix.blob, char(18), char(18)) to public as informix ;
  416. create dba function informix.locopy(informix.clob)
  417. returns informix.clob
  418. external name '(blob_copy)'
  419. language c variant;
  420. grant execute on function informix.locopy(informix.clob) to public as informix ;
  421. create dba function informix.locopy(informix.clob, char(18), char(18))
  422. returns informix.clob
  423. external name '(blob_copy_colspec)'
  424. language c variant;
  425. grant execute on function informix.locopy(informix.clob, char(18), char(18)) to public as informix ;
  426. {Types to support fastpathing of lo operations}
  427. create opaque type informix.ifx_lo_spec
  428. (
  429. internallength = 596,
  430. alignment = 8
  431. );
  432. create opaque type informix.ifx_lo_stat
  433. (
  434. internallength = 644,
  435. alignment = 8
  436. );
  437. create dba function informix.send(informix.ifx_lo_spec)
  438. returns informix.sendrecv
  439. external name '(send_ifx_lo_spec)'
  440. language c not variant;
  441. grant execute on function informix.send(informix.ifx_lo_spec) to public as informix ;
  442. create dba function informix.send(informix.ifx_lo_stat)
  443. returns informix.sendrecv
  444. external name '(send_ifx_lo_stat)'
  445. language c not variant;
  446. grant execute on function informix.send(informix.ifx_lo_stat) to public as informix ;
  447. create dba function informix.recv_spec(informix.sendrecv)
  448. returns informix.ifx_lo_spec
  449. external name '(recv_ifx_lo_spec)'
  450. language c not variant;
  451. grant execute on function informix.recv_spec(informix.sendrecv) to public as informix ;
  452. create dba function informix.recv_stat(informix.sendrecv)
  453. returns informix.ifx_lo_stat
  454. external name '(recv_ifx_lo_stat)'
  455. language c not variant;
  456. grant execute on function informix.recv_stat(informix.sendrecv) to public as informix ;
  457. create cast (informix.ifx_lo_spec as informix.sendrecv with
  458. informix.send);
  459. create cast (informix.ifx_lo_stat as informix.sendrecv with
  460. informix.send);
  461. create implicit cast (informix.sendrecv as informix.ifx_lo_spec with
  462. informix.recv_spec);
  463. create implicit cast (informix.sendrecv as informix.ifx_lo_stat with
  464. informix.recv_stat);
  465. -- fastpath entry points to support client sblob I/O
  466. create dba function informix.ifx_lo_create(ifx_lo_spec, integer, out informix.blob)
  467. returns integer
  468. external name '(sq_lo_create)'
  469. language c -- this is variant;
  470. grant execute on function informix.ifx_lo_create(ifx_lo_spec, integer,informix.blob) to public as informix ;
  471. create dba function informix.ifx_lo_open(informix.blob, integer)
  472. returns integer
  473. external name '(sq_lo_open)'
  474. language c -- this is variant;
  475. grant execute on function informix.ifx_lo_open(informix.blob, integer) to public as informix ;
  476. create dba function informix.ifx_lo_close(integer)
  477. returns integer
  478. external name '(sq_lo_close)'
  479. language c;
  480. grant execute on function informix.ifx_lo_close(integer) to public as informix ;
  481. create dba function informix.ifx_lo_truncate(integer, int8)
  482. returns integer
  483. external name '(sq_lo_truncate)'
  484. language c;
  485. grant execute on function informix.ifx_lo_truncate(integer, int8) to public as informix ;
  486. create dba function informix.ifx_lo_alter(informix.blob, informix.ifx_lo_spec)
  487. returns integer
  488. external name '(sq_lo_alter)'
  489. language c;
  490. grant execute on function informix.ifx_lo_alter(informix.blob, informix.ifx_lo_spec) to public as informix ;
  491. create dba function informix.ifx_lo_stat(integer, out informix.ifx_lo_stat)
  492. returns integer
  493. external name '(sq_lo_stat)'
  494. language c;
  495. grant execute on function informix.ifx_lo_stat(integer, informix.ifx_lo_stat) to public as informix ;
  496. create dba function informix.ifx_lo_tell(integer, out int8)
  497. returns integer
  498. external name '(sq_lo_tell)'
  499. language c;
  500. grant execute on function informix.ifx_lo_tell(integer, int8) to public as informix ;
  501. create dba function informix.ifx_lo_seek(integer, int8, integer, out int8)
  502. returns integer
  503. external name '(sq_lo_seek)'
  504. language c;
  505. grant execute on function informix.ifx_lo_seek(integer, int8, integer, int8) to public as informix ;
  506. create dba function informix.ifx_lo_filename(informix.blob, informix.lvarchar)
  507. returns informix.lvarchar
  508. external name '(sq_lo_filename)'
  509. language c;
  510. grant execute on function informix.ifx_lo_filename(informix.blob, informix.lvarchar) to public as informix ;
  511. create dba function informix.ifx_lo_col_sbinfo(informix.lvarchar, out informix.ifx_lo_spec)
  512. returns integer
  513. external name '(sq_lo_col_sblobinfo_by_colname)'
  514. language c;
  515. {args: lofd, from-filename, file-flags, file-offset, nbytes}
  516. grant execute on function informix.ifx_lo_col_sbinfo(informix.lvarchar, informix.ifx_lo_spec) to public as informix ;
  517. create dba function informix.ifx_lo_from_file(int, informix.lvarchar, int, int, int)
  518. returns integer
  519. external name '(sq_lo_from_file)'
  520. language c;
  521. grant execute on function informix.ifx_lo_from_file(int, informix.lvarchar, int, int,int)to public as informix ;
  522. create dba function informix.ifx_lo_to_file(informix.blob, informix.lvarchar, int, out int)
  523. returns informix.lvarchar
  524. external name '(sq_lo_to_file)'
  525. language c;
  526. grant execute on function informix.ifx_lo_to_file(informix.blob, informix.lvarchar, int, int) to public as informix ;
  527. create dba function informix.ifx_file_to_file(informix.lvarchar, int, informix.lvarchar, int)
  528. returns informix.lvarchar
  529. external name '(sq_file_to_file)'
  530. language c;
  531. grant execute on function informix.ifx_file_to_file(informix.lvarchar, int, informix.lvarchar, int) to public as informix ;
  532. create dba function informix.dosyscast(informix.pointer, int, int)
  533. returning informix.pointer
  534. external name '(dosyscast)'
  535. language C not variant;
  536. grant execute on function informix.dosyscast(informix.pointer, int, int) to public as informix ;
  537. { executing this procedure will allow you to have a newline character in }
  538. { the string as in "insert into tab values ("line ends here^M new line"); }
  539. create dba procedure informix.ifx_allow_newline (informix.boolean);
  540. external name '' language C
  541. end procedure;
  542. grant execute on procedure informix.ifx_allow_newline (informix.boolean) to public as informix ;
  543. create dba function informix.mi_get_typedesc(int,int)
  544. returns informix.lvarchar
  545. external name '(mife_type_typedesc)'
  546. language C;
  547. grant execute on function informix.mi_get_typedesc(int,int) to public as informix ;
  548. create dba function informix.mi_get_typedesc(informix.lvarchar)
  549. returns informix.lvarchar
  550. external name '(mife_describe_typestring)'
  551. language C;
  552. grant execute on function informix.mi_get_typedesc(informix.lvarchar) to public as informix ;
  553. create dba function informix.reload_module(varchar(255), varchar(255))
  554. returns int
  555. external name '' language C;
  556. grant execute on function informix.reload_module(varchar(255), varchar(255)) to public as informix ;
  557. create dba procedure informix.ifx_load_module (modulename varchar(255),
  558. languagename varchar(255)) returns int
  559. define retvalue int;
  560. let retvalue = reload_module(modulename, languagename);
  561. if retvalue = 0 then
  562. return 0;
  563. else
  564. raise exception -9720;
  565. end if;
  566. end procedure;
  567. grant execute on procedure informix.ifx_load_module (varchar(255), varchar(255)) to public as informix ;
  568. create dba function informix.ifx_invalid_module(varchar(255), varchar(255))
  569. returns int
  570. external name '' language C;
  571. grant execute on function informix.ifx_invalid_module(varchar(255), varchar(255)) to public as informix ;
  572. create dba function informix.ifx_new_external(varchar(255), varchar(255),
  573. varchar(255))
  574. returns informix.lvarchar
  575. external name '' language C;
  576. grant execute on function informix.ifx_new_external(varchar(255), varchar(255),varchar(255)) to public as informix ;
  577. create dba function informix.ifx_match_external(varchar(255), varchar(255))
  578. returns int
  579. external name '' language C;
  580. grant execute on function informix.ifx_match_external(varchar(255), varchar(255)) to public as informix ;
  581. create dba function informix.ifx_load_internal(varchar(255), varchar(255))
  582. returns int
  583. external name '' language C;
  584. grant execute on function informix.ifx_load_internal(varchar(255), varchar(255)) to public as informix ;
  585. -- Add sysindexes view during database construction,
  586. -- after we have added the type indexkeyarray
  587. create view informix.sysindexes
  588. (idxname, owner, tabid, idxtype, clustered,
  589. part1, part2, part3, part4, part5, part6, part7, part8,
  590. part9, part10, part11, part12, part13, part14, part15, part16,
  591. levels, leaves, nunique, clust)
  592. as select
  593. idxname, owner, tabid, idxtype, clustered,
  594. informix.ikeyextractcolno(indexkeys,0),
  595. informix.ikeyextractcolno(indexkeys,1),
  596. informix.ikeyextractcolno(indexkeys,2),
  597. informix.ikeyextractcolno(indexkeys,3),
  598. informix.ikeyextractcolno(indexkeys,4),
  599. informix.ikeyextractcolno(indexkeys,5),
  600. informix.ikeyextractcolno(indexkeys,6),
  601. informix.ikeyextractcolno(indexkeys,7),
  602. informix.ikeyextractcolno(indexkeys,8),
  603. informix.ikeyextractcolno(indexkeys,9),
  604. informix.ikeyextractcolno(indexkeys,10),
  605. informix.ikeyextractcolno(indexkeys,11),
  606. informix.ikeyextractcolno(indexkeys,12),
  607. informix.ikeyextractcolno(indexkeys,13),
  608. informix.ikeyextractcolno(indexkeys,14),
  609. informix.ikeyextractcolno(indexkeys,15),
  610. levels, leaves, nunique, clust
  611. from informix.sysindices;
  612. grant select on informix.sysindexes to public as informix;
  613. -- Define rtree access method:
  614. create dba function informix.rlt_create(pointer)
  615. returns int
  616. external name '(rlt_create)'
  617. language C;
  618. grant execute on function informix.rlt_create(pointer) to public as informix ;
  619. create dba function informix.rlt_drop(pointer)
  620. returns int
  621. external name '(rlt_drop)'
  622. language C;
  623. grant execute on function informix.rlt_drop(pointer) to public as informix ;
  624. create dba function informix.rlt_open(pointer)
  625. returns int
  626. external name '(rlt_open)'
  627. language C;
  628. grant execute on function informix.rlt_open(pointer) to public as informix ;
  629. create dba function informix.rlt_close(pointer)
  630. returns int
  631. external name '(rlt_close)'
  632. language C;
  633. grant execute on function informix.rlt_close(pointer) to public as informix ;
  634. create dba function informix.rlt_insert(pointer, pointer, pointer)
  635. returns int
  636. external name '(rlt_insert)'
  637. language C;
  638. grant execute on function informix.rlt_insert(pointer, pointer, pointer) to public as informix ;
  639. create dba function informix.rlt_delete(pointer, pointer, pointer)
  640. returns int
  641. external name '(rlt_delete)'
  642. language C;
  643. grant execute on function informix.rlt_delete(pointer, pointer, pointer) to public as informix ;
  644. create dba function informix.rlt_update(pointer, pointer, pointer,
  645. pointer, pointer)
  646. returns int
  647. external name '(rlt_update)'
  648. language C;
  649. grant execute on function informix.rlt_update(pointer, pointer, pointer,pointer, pointer) to public as informix ;
  650. create dba function informix.rlt_beginscan(pointer)
  651. returns int
  652. external name '(rlt_beginscan)'
  653. language C;
  654. grant execute on function informix.rlt_beginscan(pointer) to public as informix ;
  655. create dba function informix.rlt_endscan(pointer)
  656. returns int
  657. external name '(rlt_endscan)'
  658. language C;
  659. grant execute on function informix.rlt_endscan(pointer) to public as informix;
  660. create dba function informix.rlt_rescan(pointer)
  661. returns int
  662. external name '(rlt_rescan)'
  663. language C;
  664. grant execute on function informix.rlt_rescan(pointer) to public as informix ;
  665. create dba function informix.rlt_getnext(pointer, pointer, pointer)
  666. returns int
  667. external name '(rlt_getnext)'
  668. language C;
  669. grant execute on function informix.rlt_getnext(pointer, pointer, pointer) to public as informix ;
  670. -- Define optimizer related functions for rtree access method
  671. create dba function informix.rlt_stat(pointer, pointer)
  672. returns int
  673. external name '(rlt_stat)'
  674. language C;
  675. grant execute on function informix.rlt_stat(pointer, pointer) to public as informix ;
  676. create dba function informix.rlt_cost(pointer, pointer)
  677. returns real
  678. external name '(rlt_cost)'
  679. language C;
  680. grant execute on function informix.rlt_cost(pointer, pointer) to public as informix ;
  681. create secondary access_method informix.rtree (
  682. am_create = informix.rlt_create,
  683. am_drop = informix.rlt_drop,
  684. am_open = informix.rlt_open,
  685. am_close = informix.rlt_close,
  686. am_insert = informix.rlt_insert,
  687. am_delete = informix.rlt_delete,
  688. am_update = informix.rlt_update,
  689. am_beginscan = informix.rlt_beginscan,
  690. am_endscan = informix.rlt_endscan,
  691. am_rescan = informix.rlt_rescan,
  692. am_getnext = informix.rlt_getnext,
  693. am_stats = informix.rlt_stat,
  694. am_scancost = informix.rlt_cost,
  695. am_sptype = 'D');
  696. -- Default opclass for rtrees: rtree_ops
  697. create opclass informix.rtree_ops for informix.rtree
  698. strategies (overlap, equal, contains, within)
  699. support (union, size, inter);
  700. alter access_method informix.rtree add am_defopclass = informix.rtree_ops;
  701. { these functions are created to extract type information for triggers }
  702. create dba function informix.trigger_cols(int)
  703. returns informix.lvarchar
  704. external name ''
  705. language C;
  706. grant execute on function informix.trigger_cols(int)to public as informix ;
  707. create dba procedure informix.ifx_trigger_cols(trigid int)
  708. returns informix.lvarchar
  709. return (informix.trigger_cols(trigid));
  710. end procedure;
  711. grant execute on procedure informix.ifx_trigger_cols(int) to public as informix ;
  712. create dba function informix.trigger_action (int, int)
  713. returns informix.lvarchar
  714. external name ''
  715. language C;
  716. grant execute on function informix.trigger_action (int, int) to public as informix ;
  717. create dba procedure informix.ifx_trigger_action(trigid int, when CHAR(10))
  718. returns informix.lvarchar;
  719. define cleanwhen char(10);
  720. define intwhen int;
  721. let cleanwhen = trim (BOTH FROM when);
  722. if (cleanwhen = 'BEFORE' or cleanwhen = 'before') then
  723. let intwhen = 1;
  724. elif (cleanwhen = 'ROW' or cleanwhen = 'row') then
  725. let intwhen = 2;
  726. elif (cleanwhen = 'AFTER' or cleanwhen = 'after') then
  727. let intwhen = 3;
  728. else
  729. return NULL;
  730. end if;
  731. return (informix.trigger_action(trigid, intwhen));
  732. end procedure;
  733. grant execute on procedure informix.ifx_trigger_action(int,CHAR(10)) to public as informix ;
  734. create dba function informix.ifx_lo_release(informix.blob)
  735. returns integer
  736. external name '(sq_lo_release)'
  737. language c -- this is variant;
  738. grant execute on function informix.ifx_lo_release(informix.blob) to public as informix ;
  739. -- Define recovery related functions for the rtree access method:
  740. create dba function informix.rlt_redo(pointer, pointer, int, int)
  741. returns int
  742. external name '(rlt_redo)'
  743. language C;
  744. grant execute on function informix.rlt_redo(pointer, pointer, int, int) to public as informix ;
  745. create dba function informix.rlt_undo(pointer, pointer, int, int)
  746. returns int
  747. external name '(rlt_undo)'
  748. language C;
  749. grant execute on function informix.rlt_undo(pointer, pointer, int, int) to public as informix ;
  750. create dba function informix.rlt_commit(int)
  751. returns int
  752. external name '(rlt_commit)'
  753. language C;
  754. grant execute on function informix.rlt_commit(int) to public as informix ;
  755. create dba function informix.rlt_abort(int)
  756. returns int
  757. external name '(rlt_abort)'
  758. language C;
  759. grant execute on function informix.rlt_abort(int) to public as informix ;