boot1170.sql 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. { ************************************************************************* }
  2. { }
  3. { Licensed Materials - Property of IBM and/or HCL }
  4. { }
  5. { IBM Informix Dynamic Server }
  6. { Copyright IBM Corporation 2009, 2015 }
  7. { (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved. }
  8. { }
  9. { Title: boot1170.sql }
  10. { }
  11. { Description: }
  12. { Bootstrapping script for a 11.70 database }
  13. { }
  14. { ************************************************************************* }
  15. { }
  16. { ** IMPORTANT - PLEASE READ }
  17. { }
  18. { All types and routines referenced in this file must be prefixed }
  19. { with the user name "informix". E.g., use "informix.boolean" }
  20. { and not "boolean" }
  21. { }
  22. { Also, please follow the formatting conventions!!! }
  23. { }
  24. { Please ensure that the identifiers that you choose are <= 18 }
  25. { characters in length. Otherwise the changes would affect database }
  26. { reversion. }
  27. { }
  28. { ************************************************************************* }
  29. create procedure informix.dummyproc_1170()
  30. end procedure;
  31. grant execute on procedure informix.dummyproc_1170 to public as informix;
  32. create dba function informix.cdrcmdfl(informix.integer)
  33. returns informix.float
  34. external name '(cdrcmdfl_1)'
  35. language C;
  36. grant execute on function informix.cdrcmdfl(informix.integer)
  37. to public as informix;
  38. { --- SPL debugger: Routines required to handle the session manager --- }
  39. create dba function SYSPROC.DBG_LookupSessionManager(
  40. OUT host_ip varchar(128),
  41. OUT port integer)
  42. returns integer
  43. external name '(DBG_LookupSessionManager)'
  44. language C;
  45. grant execute on function SYSPROC.DBG_LookupSessionManager(varchar(128), integer) to public as SYSPROC;
  46. create dba function SYSPROC.DBG_RunSessionManager(
  47. port integer,
  48. idle_timeout integer,
  49. OUT xml_reply blob)
  50. returns integer
  51. external name '(DBG_RunSessionManager)'
  52. language C;
  53. grant execute on function SYSPROC.DBG_RunSessionManager(integer, integer, blob)
  54. to public as SYSPROC;
  55. create dba function SYSPROC.DBG_EndSessionManager(
  56. host_ip varchar(128),
  57. port integer,
  58. OUT xml_reply blob)
  59. returns integer
  60. external name '(DBG_EndSessionManager)'
  61. language C;
  62. grant execute on function SYSPROC.DBG_EndSessionManager(varchar(128), integer, blob) to public as SYSPROC;
  63. create dba function SYSPROC.DBG_PingSessionManager(
  64. host_ip varchar(128),
  65. port integer,
  66. OUT xml_reply blob)
  67. returns integer
  68. external name '(DBG_PingSessionManager)'
  69. language C;
  70. grant execute on function SYSPROC.DBG_PingSessionManager(varchar(128), integer, blob) to public as SYSPROC;
  71. create dba function SYSPROC.DBG_InitializeClient(
  72. host_ip varchar(128),
  73. port integer,
  74. xml_request blob,
  75. OUT xml_reply blob)
  76. returns integer
  77. external name '(DBG_InitializeClient)'
  78. language C;
  79. grant execute on function SYSPROC.DBG_InitializeClient(varchar(128), integer, blob, blob) to public as SYSPROC;
  80. create dba function SYSPROC.DBG_TerminateClient(
  81. host_ip varchar(128),
  82. port integer,
  83. xml_request blob,
  84. OUT xml_reply blob)
  85. returns integer
  86. external name '(DBG_TerminateClient)'
  87. language C;
  88. grant execute on function SYSPROC.DBG_TerminateClient(varchar(128), integer, blob, blob) to public as SYSPROC;
  89. create dba function SYSPROC.DBG_SendClientRequests(
  90. host_ip varchar(128),
  91. port integer,
  92. xml_request blob,
  93. OUT xml_reply blob)
  94. returns integer
  95. external name '(DBG_SendClientRequests)'
  96. language C;
  97. grant execute on function SYSPROC.DBG_SendClientRequests(varchar(128), integer, blob, blob) to public as SYSPROC;
  98. create dba function SYSPROC.DBG_SendClientCommands(
  99. host_ip varchar(128),
  100. port integer,
  101. xml_request blob,
  102. xml_data blob,
  103. bin_data blob,
  104. OUT xml_reply blob)
  105. returns integer
  106. external name '(DBG_SendClientCommands)'
  107. language C;
  108. grant execute on function SYSPROC.DBG_SendClientCommands(varchar(128), integer, blob, blob, blob, blob) to public as SYSPROC;
  109. create dba function SYSPROC.DBG_RecvClientReports(
  110. host_ip varchar(128),
  111. port integer,
  112. xml_request blob,
  113. OUT xml_reply blob,
  114. OUT xml_data blob,
  115. OUT bin_data blob)
  116. returns integer
  117. external name '(DBG_RecvClientReports)'
  118. language C;
  119. grant execute on function SYSPROC.DBG_RecvClientReports(varchar(128), integer, blob, blob, blob, blob) to public as SYSPROC;
  120. create dba function informix.filetoblob(informix.lvarchar, char(6), char(128), char(128))
  121. returns informix.blob
  122. with (handlesnulls)
  123. external name '(blob_from_file_colspec)'
  124. language c variant;
  125. grant execute on function informix.filetoblob(informix.lvarchar, char(6), char(128), char(128)) to public as informix ;
  126. create dba function informix.filetoclob(informix.lvarchar, char(6), char(128), char(128))
  127. returns informix.clob
  128. with (handlesnulls)
  129. external name '(blob_from_file_colspec)'
  130. language c variant;
  131. grant execute on function informix.filetoclob(informix.lvarchar, char(6), char(128), char(128)) to public as informix ;
  132. create dba function informix.locopy(informix.blob, char(128), char(128))
  133. returns informix.blob
  134. with (handlesnulls)
  135. external name '(blob_copy_colspec)'
  136. language c variant;
  137. grant execute on function informix.locopy(informix.blob, char(128), char(128)) to public as informix ;
  138. create dba function informix.locopy(informix.clob, char(128), char(128))
  139. returns informix.clob
  140. with (handlesnulls)
  141. external name '(blob_copy_colspec)'
  142. language c variant;
  143. grant execute on function informix.locopy(informix.clob, char(128), char(128)) to public as informix ;
  144. create dba procedure informix.ifx_grid_connect(informix.lvarchar)
  145. with (handlesnulls,parallelizable)
  146. external name '(grid_connect1)'
  147. language C
  148. end procedure;
  149. grant execute on procedure informix.ifx_grid_connect(informix.lvarchar)
  150. to public as informix;
  151. create dba procedure
  152. informix.ifx_grid_connect(
  153. informix.lvarchar,
  154. informix.lvarchar)
  155. with (handlesnulls,parallelizable)
  156. external name '(grid_connect2)'
  157. language C
  158. end procedure;
  159. grant execute on procedure informix.ifx_grid_connect(
  160. informix.lvarchar,
  161. informix.lvarchar)
  162. to public as informix;
  163. create dba procedure
  164. informix.ifx_grid_connect(
  165. informix.lvarchar,
  166. informix.lvarchar,
  167. informix.integer)
  168. with (handlesnulls,parallelizable)
  169. external name '(grid_connect3)'
  170. language C
  171. end procedure;
  172. grant execute on procedure informix.ifx_grid_connect(
  173. informix.lvarchar,
  174. informix.lvarchar,
  175. informix.integer)
  176. to public as informix;
  177. create dba procedure
  178. informix.ifx_grid_connect(
  179. informix.lvarchar,
  180. informix.integer)
  181. with (handlesnulls,parallelizable)
  182. external name '(grid_connect4)'
  183. language C
  184. end procedure;
  185. grant execute on procedure informix.ifx_grid_connect(
  186. informix.lvarchar,
  187. informix.integer)
  188. to public as informix;
  189. create dba procedure
  190. informix.ifx_grid_disconnect()
  191. with (handlesnulls, parallelizable)
  192. external name '(grid_disconnect)'
  193. language C
  194. end procedure;
  195. grant execute on procedure informix.ifx_grid_disconnect()
  196. to public as informix;
  197. create dba procedure
  198. informix.ifx_grid_procedure(
  199. informix.lvarchar,
  200. informix.lvarchar)
  201. with (handlesnulls)
  202. external name '(grid_procedure2)'
  203. language C
  204. end procedure;
  205. grant execute on procedure informix.ifx_grid_procedure(
  206. informix.lvarchar,
  207. informix.lvarchar)
  208. to public as informix;
  209. create dba procedure
  210. informix.ifx_grid_procedure(
  211. informix.lvarchar,
  212. informix.lvarchar,
  213. informix.lvarchar)
  214. with (handlesnulls)
  215. external name '(grid_procedure3)'
  216. language C
  217. end procedure;
  218. grant execute on procedure informix.ifx_grid_procedure(
  219. informix.lvarchar,
  220. informix.lvarchar,
  221. informix.lvarchar)
  222. to public as informix;
  223. create dba procedure
  224. informix.ifx_grid_execute(
  225. informix.lvarchar,
  226. informix.lvarchar)
  227. with (handlesnulls)
  228. external name '(grid_execute2)'
  229. language C
  230. end procedure;
  231. grant execute on procedure informix.ifx_grid_execute(
  232. informix.lvarchar,
  233. informix.lvarchar)
  234. to public as informix;
  235. create dba procedure
  236. informix.ifx_grid_execute(
  237. informix.lvarchar,
  238. informix.lvarchar,
  239. informix.lvarchar)
  240. with (handlesnulls)
  241. external name '(grid_execute3)'
  242. language C
  243. end procedure;
  244. grant execute on procedure informix.ifx_grid_execute(
  245. informix.lvarchar,
  246. informix.lvarchar,
  247. informix.lvarchar)
  248. to public as informix;
  249. create dba function informix.ifx_grid_function(
  250. informix.lvarchar,
  251. informix.lvarchar)
  252. returns lvarchar(30000)
  253. with (handlesnulls)
  254. external name '(grid_function2)'
  255. language C;
  256. grant execute on function informix.ifx_grid_function(
  257. informix.lvarchar,
  258. informix.lvarchar)
  259. to public as informix;
  260. create dba function informix.ifx_grid_function(
  261. informix.lvarchar,
  262. informix.lvarchar,
  263. informix.lvarchar)
  264. returns lvarchar(30000)
  265. with (handlesnulls)
  266. external name '(grid_function3)'
  267. language C;
  268. grant execute on function informix.ifx_grid_function(
  269. informix.lvarchar,
  270. informix.lvarchar,
  271. informix.lvarchar)
  272. to public as informix;
  273. create dba procedure informix.ifx_grid_executecmd()
  274. with (handlesnulls)
  275. external name '(grid_executeCmd)'
  276. language C
  277. end procedure;
  278. grant execute on procedure
  279. informix.ifx_grid_executecmd()
  280. to public as informix;
  281. create dba function informix.ifx_get_erstate()
  282. returns integer
  283. external name '(ifx_get_erstate)'
  284. language C;
  285. grant execute on function informix.ifx_get_erstate()
  286. to public as informix;
  287. create dba procedure informix.ifx_set_erstate( informix.integer)
  288. external name '(ifx_set_erstate1)'
  289. language C
  290. end procedure;
  291. grant execute on procedure informix.ifx_set_erstate(informix.integer)
  292. to public as informix;
  293. create dba procedure informix.ifx_set_erstate( informix.lvarchar)
  294. external name '(ifx_set_erstate2)'
  295. language C
  296. end procedure;
  297. grant execute on procedure informix.ifx_set_erstate(informix.lvarchar)
  298. to public as informix;
  299. create dba procedure informix.ifx_grid_redo()
  300. external name '(grid_redo0)'
  301. language C
  302. end procedure;
  303. grant execute on procedure informix.ifx_grid_redo()
  304. to public as informix;
  305. create dba procedure informix.ifx_grid_redo(
  306. informix.lvarchar)
  307. with (handlesnulls)
  308. external name '(grid_redo1)'
  309. language C
  310. end procedure;
  311. grant execute on procedure informix.ifx_grid_redo(
  312. informix.lvarchar)
  313. to public as informix;
  314. create dba procedure informix.ifx_grid_redo(
  315. informix.lvarchar,
  316. informix.lvarchar)
  317. with (handlesnulls)
  318. external name '(grid_redo2)'
  319. language C
  320. end procedure;
  321. grant execute on procedure informix.ifx_grid_redo(
  322. informix.lvarchar,
  323. informix.lvarchar)
  324. to public as informix;
  325. create dba procedure informix.ifx_grid_redo(
  326. informix.lvarchar,
  327. informix.lvarchar,
  328. informix.lvarchar)
  329. with (handlesnulls)
  330. external name '(grid_redo3)'
  331. language C
  332. end procedure;
  333. grant execute on procedure informix.ifx_grid_redo(
  334. informix.lvarchar,
  335. informix.lvarchar,
  336. informix.lvarchar)
  337. to public as informix;
  338. create dba procedure informix.ifx_grid_redo(
  339. informix.lvarchar,
  340. informix.lvarchar,
  341. informix.lvarchar,
  342. informix.lvarchar)
  343. with (handlesnulls)
  344. external name '(grid_redo4)'
  345. language C
  346. end procedure;
  347. grant execute on procedure informix.ifx_grid_redo(
  348. informix.lvarchar,
  349. informix.lvarchar,
  350. informix.lvarchar,
  351. informix.lvarchar)
  352. to public as informix;
  353. create dba procedure informix.ifx_grid_redo(
  354. informix.lvarchar,
  355. informix.lvarchar,
  356. informix.lvarchar,
  357. informix.lvarchar,
  358. informix.lvarchar)
  359. with (handlesnulls)
  360. external name '(grid_redo5)'
  361. language C
  362. end procedure;
  363. grant execute on procedure informix.ifx_grid_redo(
  364. informix.lvarchar,
  365. informix.lvarchar,
  366. informix.lvarchar,
  367. informix.lvarchar,
  368. informix.lvarchar)
  369. to public as informix;
  370. create dba procedure informix.ifx_grid_redo(
  371. informix.lvarchar,
  372. informix.lvarchar,
  373. informix.lvarchar,
  374. informix.lvarchar,
  375. informix.lvarchar,
  376. informix.lvarchar)
  377. with (handlesnulls)
  378. external name '(grid_redo6)'
  379. language C
  380. end procedure;
  381. grant execute on procedure informix.ifx_grid_redo(
  382. informix.lvarchar,
  383. informix.lvarchar,
  384. informix.lvarchar,
  385. informix.lvarchar,
  386. informix.lvarchar,
  387. informix.lvarchar)
  388. to public as informix;
  389. create dba procedure informix.ifx_grid_purge()
  390. external name '(grid_purge0)'
  391. language C
  392. end procedure;
  393. grant execute on procedure informix.ifx_grid_purge()
  394. to public as informix;
  395. create dba procedure informix.ifx_grid_purge(
  396. informix.lvarchar)
  397. with (handlesnulls)
  398. external name '(grid_purge1)'
  399. language C
  400. end procedure;
  401. grant execute on procedure informix.ifx_grid_purge(
  402. informix.lvarchar)
  403. to public as informix;
  404. create dba procedure informix.ifx_grid_purge(
  405. informix.lvarchar,
  406. informix.lvarchar)
  407. with (handlesnulls)
  408. external name '(grid_purge2)'
  409. language C
  410. end procedure;
  411. grant execute on procedure informix.ifx_grid_purge(
  412. informix.lvarchar,
  413. informix.lvarchar)
  414. to public as informix;
  415. create dba procedure informix.ifx_grid_purge(
  416. informix.lvarchar,
  417. informix.lvarchar,
  418. informix.lvarchar)
  419. with (handlesnulls)
  420. external name '(grid_purge3)'
  421. language C
  422. end procedure;
  423. grant execute on procedure informix.ifx_grid_purge(
  424. informix.lvarchar,
  425. informix.lvarchar,
  426. informix.lvarchar)
  427. to public as informix;
  428. create dba procedure informix.ifx_grid_purge(
  429. informix.lvarchar,
  430. informix.lvarchar,
  431. informix.lvarchar,
  432. informix.lvarchar)
  433. with (handlesnulls)
  434. external name '(grid_purge4)'
  435. language C
  436. end procedure;
  437. grant execute on procedure informix.ifx_grid_purge(
  438. informix.lvarchar,
  439. informix.lvarchar,
  440. informix.lvarchar,
  441. informix.lvarchar)
  442. to public as informix;
  443. create dba procedure informix.ifx_grid_purge(
  444. informix.lvarchar,
  445. informix.lvarchar,
  446. informix.lvarchar,
  447. informix.lvarchar,
  448. informix.lvarchar)
  449. with (handlesnulls)
  450. external name '(grid_purge5)'
  451. language C
  452. end procedure;
  453. grant execute on procedure informix.ifx_grid_purge(
  454. informix.lvarchar,
  455. informix.lvarchar,
  456. informix.lvarchar,
  457. informix.lvarchar,
  458. informix.lvarchar)
  459. to public as informix;
  460. create dba procedure informix.ifx_grid_purge(
  461. informix.lvarchar,
  462. informix.lvarchar,
  463. informix.lvarchar,
  464. informix.lvarchar,
  465. informix.lvarchar,
  466. informix.lvarchar)
  467. with (handlesnulls)
  468. external name '(grid_purge6)'
  469. language C
  470. end procedure;
  471. grant execute on procedure informix.ifx_grid_purge(
  472. informix.lvarchar,
  473. informix.lvarchar,
  474. informix.lvarchar,
  475. informix.lvarchar,
  476. informix.lvarchar,
  477. informix.lvarchar)
  478. to public as informix;
  479. { --- Create new sysfdist procedure }
  480. create dba procedure informix.sysfdist (table_id int, column_no int)
  481. returning int, int, datetime year to fraction (5), stat;
  482. define v_tabauth char(8);
  483. define v_colauth char(3);
  484. define is_allowed int;
  485. define search_columns int;
  486. define v_colno smallint;
  487. define v_fragid int;
  488. define v_seqno int;
  489. define v_constr_time datetime year to fraction(5);
  490. define v_mode char(1);
  491. define v_encdist stat;
  492. define v_owner char(8);
  493. define user procedure;
  494. -- First verify that the current user has select privileges on this column
  495. let is_allowed = 0;
  496. let search_columns = 0;
  497. if user = 'informix' then
  498. let is_allowed = 1;
  499. else
  500. -- Check sysusers to see if the usertype is 'D', ie., the
  501. -- current user has dba privileges and may see any columns.
  502. select usertype
  503. into v_mode
  504. from informix.sysusers
  505. where username = user;
  506. if v_mode = 'D' then
  507. let is_allowed = 1;
  508. else
  509. -- See if the user owns the table, and therefore can see the columns.
  510. select owner
  511. into v_owner
  512. from informix.systables
  513. where tabid = table_id;
  514. if v_owner = user then
  515. let is_allowed = 1;
  516. end if
  517. end if
  518. end if
  519. if is_allowed = 0 then
  520. foreach
  521. select tabauth
  522. into v_tabauth
  523. from informix.systabauth
  524. where tabid = table_id and
  525. (grantee = user or
  526. grantee = 'public')
  527. if substr(v_tabauth, 1, 1) = 's' or substr(v_tabauth, 1, 1) = 'S' then
  528. let is_allowed = 1;
  529. exit foreach;
  530. elif substr(v_tabauth, 3, 1) = '*' then
  531. let search_columns = 1;
  532. end if
  533. end foreach
  534. end if
  535. -- Search syscolauth only if user does not have select
  536. -- privileges on all columns. If the user has no select
  537. -- privileges on any column, then we need search no further.
  538. if is_allowed = 0 and search_columns = 1 then
  539. foreach
  540. select colauth
  541. into v_colauth
  542. from informix.syscolauth
  543. where tabid = table_id and
  544. colno = column_no and
  545. (grantee = user or
  546. grantee = 'public')
  547. if substr(v_colauth, 1, 1) = 's' or substr(v_colauth, 1, 1) = 'S' then
  548. let is_allowed = 1;
  549. exit foreach;
  550. end if
  551. end foreach
  552. end if
  553. -- Return with no rows found if not allowed to select from
  554. -- the column designated by (tabid,colno).
  555. if is_allowed = 0 then
  556. raise exception -272;
  557. end if
  558. -- Now find the distribution rows
  559. foreach
  560. select fragid, seqno, constr_time, encdist
  561. into v_fragid, v_seqno, v_constr_time, v_encdist
  562. from informix.sysfragdist
  563. where tabid = table_id and
  564. colno = column_no
  565. order by fragid
  566. return v_fragid, v_seqno, v_constr_time, v_encdist
  567. with resume;
  568. end foreach
  569. -- Engine will return 100 to user
  570. end procedure;
  571. grant execute on informix.sysfdist to public as informix;