bootcdc.sql 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. --
  2. --
  3. -- Licensed Materials - Property of IBM and/or HCL
  4. --
  5. -- IBM Informix Dynamic Server
  6. -- (c) Copyright IBM Corporation 2008, 2011. All rights reserved.
  7. -- (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved.
  8. --
  9. --
  10. set lock mode to wait;
  11. create database syscdcv1 with log;
  12. database syscdcv1 exclusive;
  13. { interface version }
  14. create table informix.syscdcvers
  15. (
  16. majvers informix.integer, { Current API major version }
  17. minvers informix.integer { Current API minor version }
  18. );
  19. insert into informix.syscdcvers values(1, 1);
  20. { data capture sessions }
  21. create table informix.syscdcsess
  22. (
  23. sessid informix.integer, {session identifier }
  24. majvers informix.integer, {version of session behavior}
  25. minvers informix.integer, {version of session behavior}
  26. seqnum informix.bigint, {record sequence number}
  27. timeout informix.integer, {timeout associated with reads}
  28. createtime informix.bigint, {UTC time when session created}
  29. flags informix.integer, {reserved for future use}
  30. status informix.integer, {reserved for future use}
  31. errcode informix.integer, {error code }
  32. errutc informix.bigint {UTC time when error generated}
  33. );
  34. create unique index informix.syssesssidx on informix.syscdcsess(sessid);
  35. revoke all on informix.syscdcsess from public as informix;
  36. { captured tables }
  37. create table informix.syscdctabs
  38. (
  39. sessid integer, { session id }
  40. dbname varchar(128), { database name }
  41. tabname varchar(128), { table name }
  42. owner char(32), { table owner }
  43. seqnum bigint, { table version identifier }
  44. startutc bigint, { UTC time at which capture started }
  45. userdata integer, { uninterpreted user data }
  46. fixedbytes integer, { bytes in fixed-sized columns }
  47. numfixed integer, { number of fixed-size columns }
  48. fixedcols lvarchar(16000),{ fixed-size column names }
  49. numvar integer, { number of var-size columns }
  50. varcols lvarchar(16000),{ variable-size column names }
  51. flags integer, { reserved }
  52. status integer { reserved }
  53. );
  54. create unique index informix.systabsidx on informix.syscdctabs(sessid);
  55. create index informix.sysnameidx on informix.syscdctabs(tabname);
  56. revoke all on informix.syscdctabs from public as informix;
  57. { packetization schemes }
  58. { WARNING: The numerical values associated with each symbolic name }
  59. { may change without notice. Do not use the numerical values }
  60. { directly. Always create an internal mapping table on startup, }
  61. { based on the symbolic names. }
  62. create table informix.syscdcpacketschemes
  63. (
  64. schemenum integer, { numeric value }
  65. schemename varchar(16), { symbolic name }
  66. schemedesc varchar(127) { description }
  67. );
  68. revoke all on informix.syscdcpacketschemes from public as informix;
  69. insert into informix.syscdcpacketschemes values(66, 'CDC_PKTSCHEME_LRECBINARY', 'Binary data format.');
  70. { record types }
  71. { WARNING: The numerical values associated with each symbolic name }
  72. { may change without notice. Do not use the numerical values }
  73. { directly. Always create an internal mapping table on startup, }
  74. { based on the symbolic names. }
  75. create table informix.syscdcrectypes
  76. (
  77. recnum integer, { numeric value }
  78. recname varchar(16), { symbolic name }
  79. recdesc varchar(127) { description }
  80. );
  81. revoke all on informix.syscdcrectypes from public as informix;
  82. insert into informix.syscdcrectypes values(1, 'CDC_REC_BEGINTX', 'Begin Transaction');
  83. insert into informix.syscdcrectypes values(2, 'CDC_REC_COMMTX', 'Commit Transaction');
  84. insert into informix.syscdcrectypes values(3, 'CDC_REC_RBTX', 'Rollback Transaction');
  85. insert into informix.syscdcrectypes values(40, 'CDC_REC_INSERT', 'Insert row');
  86. insert into informix.syscdcrectypes values(41, 'CDC_REC_DELETE', 'Delete row');
  87. insert into informix.syscdcrectypes values(42, 'CDC_REC_UPDBEF', 'Update row before image');
  88. insert into informix.syscdcrectypes values(43, 'CDC_REC_UPDAFT', 'Update row after image');
  89. insert into informix.syscdcrectypes values(62, 'CDC_REC_DISCARD', 'Discard log records after LSN');
  90. insert into informix.syscdcrectypes values(119, 'CDC_REC_TRUNCATE', 'Truncate table');
  91. insert into informix.syscdcrectypes values(200, 'CDC_REC_TABSCHEMA', 'Format of I/U/D records');
  92. insert into informix.syscdcrectypes values(201, 'CDC_REC_TIMEOUT', 'Read timeout');
  93. insert into informix.syscdcrectypes values(202, 'CDC_REC_ERROR', 'Error description');
  94. { The below symbolic names are deprecated. DO NOT USE. }
  95. insert into informix.syscdcrectypes values(1, 'BEGINTX', 'Begin Transaction');
  96. insert into informix.syscdcrectypes values(2, 'COMMTX', 'Commit Transaction');
  97. insert into informix.syscdcrectypes values(3, 'RBTX', 'Rollback Transaction');
  98. insert into informix.syscdcrectypes values(40, 'INSERT', 'Insert row');
  99. insert into informix.syscdcrectypes values(41, 'DELETE', 'Delete row');
  100. insert into informix.syscdcrectypes values(42, 'UPDBEF', 'Update row before image');
  101. insert into informix.syscdcrectypes values(43, 'UPDAFT', 'Update row after image');
  102. insert into informix.syscdcrectypes values(62, 'DISCARD', 'Discard log records after LSN');
  103. insert into informix.syscdcrectypes values(119, 'TRUNCATE', 'Truncate table');
  104. insert into informix.syscdcrectypes values(200, 'TABSCHEMA', 'Format of I/U/D records');
  105. insert into informix.syscdcrectypes values(201, 'TIMEOUT', 'Read timeout');
  106. insert into informix.syscdcrectypes values(202, 'ERROR', 'Error description');
  107. { error codes }
  108. { WARNING: The numerical values associated with each symbolic name }
  109. { may change without notice. Do not use the numerical values }
  110. { directly. Always create an internal mapping table on startup, }
  111. { based on the symbolic names. }
  112. create table informix.syscdcerrcodes
  113. (
  114. errcode integer, { numeric value }
  115. errname varchar(16), { symbolic name }
  116. errdesc varchar(127) { description }
  117. );
  118. revoke all on informix.syscdcerrcodes from public as informix;
  119. insert into informix.syscdcerrcodes values( 0, 'CDC_E_OK',
  120. 'Operation succeeded.');
  121. insert into informix.syscdcerrcodes values( -83701, 'CDC_E_NOCDCDB',
  122. 'The syscdcv1 database does not exist.');
  123. insert into informix.syscdcerrcodes values( -83702, 'CDC_E_APIVERS',
  124. 'The requested CDC API behavior version is not valid or is unsupported.');
  125. insert into informix.syscdcerrcodes values( -83703, 'CDC_E_NODB',
  126. 'The specified database does not exist.');
  127. insert into informix.syscdcerrcodes values( -83704, 'CDC_E_DBNOTLOGGED',
  128. 'The specified database is not logged.');
  129. insert into informix.syscdcerrcodes values( -83705, 'CDC_E_NOTAB',
  130. 'The specified table does not exist.');
  131. insert into informix.syscdcerrcodes values( -83706, 'CDC_E_TABPROPERTIES',
  132. 'The table properties do not support capture: it is a temporary table, a view, or otherwise not logged.');
  133. insert into informix.syscdcerrcodes values( -83707, 'CDC_E_NOCOL',
  134. 'The specified column does not exist.');
  135. insert into informix.syscdcerrcodes values( -83708, 'CDC_E_NOSESS',
  136. 'The specified CDC session does not exist.');
  137. insert into informix.syscdcerrcodes values( -83709, 'CDC_E_NOREOPEN',
  138. 'The CDC session cannot be reopened.');
  139. insert into informix.syscdcerrcodes values(-83710, 'CDC_E_TABCAPTURED',
  140. 'The specified table is already being captured by the CDC session.');
  141. insert into informix.syscdcerrcodes values(-83711, 'CDC_E_TABNOTCAPTURED',
  142. 'The specified table is not being captured by the CDC session.');
  143. insert into informix.syscdcerrcodes values(-83712, 'CDC_E_ARGNULL',
  144. 'An argument to the function has the SQL NULL value, which is not allowed.');
  145. insert into informix.syscdcerrcodes values(-83713, 'CDC_E_LSN',
  146. 'Data at the requested log sequence number is not available for capture.');
  147. insert into informix.syscdcerrcodes values(-83714, 'CDC_E_DIRECTION',
  148. 'Direction on reopen does not match with existing CDC session direction.');
  149. insert into informix.syscdcerrcodes values(-83715, 'CDC_E_DUPLSESS',
  150. 'A CDC session is already active.');
  151. { The following error codes provide information about what argument to }
  152. { are invalid. UDR argument binding need not be positional; the }
  153. { position values refer to the order in which formal parameter appear }
  154. { in the UDR signature. }
  155. insert into informix.syscdcerrcodes values(-83720, 'CDC_E_ARG',
  156. 'A parameter passed to the function is not valid');
  157. insert into informix.syscdcerrcodes values(-83721, 'CDC_E_ARG1',
  158. 'The first parameter passed to the function is not valid.');
  159. insert into informix.syscdcerrcodes values(-83722, 'CDC_E_ARG2',
  160. 'The second parameter passed to the UDR is not valid.');
  161. insert into informix.syscdcerrcodes values(-83723, 'CDC_E_ARG3',
  162. 'The third parameter passed to the UDR is not valid.');
  163. insert into informix.syscdcerrcodes values(-83724, 'CDC_E_ARG4',
  164. 'The fourth parameter passed to the UDR is not valid.');
  165. insert into informix.syscdcerrcodes values(-83725, 'CDC_E_ARG5',
  166. 'The fifth parameter passed to the UDR is not valid.');
  167. insert into informix.syscdcerrcodes values(-83726, 'CDC_E_ARG6',
  168. 'The sixth parameter passed to the UDR is not valid.');
  169. insert into informix.syscdcerrcodes values(-83790, 'CDC_E_INTERNAL',
  170. 'Internal error. Contact IBM Informix Technical Support.');
  171. insert into informix.syscdcerrcodes values(-83791, 'CDC_E_NOMEM',
  172. 'Memory allocation failed.');
  173. insert into informix.syscdcerrcodes values(-83792, 'CDC_E_MUSTCLOSE',
  174. 'The CDC capture session cannot continue and must be closed.');
  175. insert into informix.syscdcerrcodes values(-83793, 'CDC_E_BADSTATE',
  176. 'The resource state does not allow the attempted operation.');
  177. insert into informix.syscdcerrcodes values(-83794, 'CDC_E_BADCHAR',
  178. 'A byte sequence that is not a valid character in the character codeset was encountered.');
  179. insert into informix.syscdcerrcodes values(-83795, 'CDC_E_INTERRUPT',
  180. 'The CDC session was interrupted.');
  181. insert into informix.syscdcerrcodes values(-83796, 'CDC_E_LOCALEMISMATCH',
  182. 'The locale setting in the environment does not match the locale of the database.');
  183. insert into informix.syscdcerrcodes values(-83797, 'CDC_E_LOGWRAP',
  184. 'The current logical log that CDC is reading is overwritten.');
  185. insert into informix.syscdcerrcodes values(-83798, 'CDC_E_LOGPAGE',
  186. 'CDC received incorrect logical log page data.');
  187. insert into informix.syscdcerrcodes values(-83799, 'CDC_E_UNIMPL',
  188. 'Unimplemented feature.');
  189. insert into informix.syscdcerrcodes values(-83800, 'CDC_E_OUTOFSEQ',
  190. 'Internal error. CDC received out-of-sequence logical log page data.');
  191. insert into informix.syscdcerrcodes values(-83802, 'CDC_E_EXPANDROW',
  192. 'CDC could not expand a disk compressed row.');
  193. create table informix.syscdcfullrowlogging
  194. (
  195. table_db char(256), { database name }
  196. table_owner char(64), { owner name }
  197. table_name char(256), { table name }
  198. start_logf int,
  199. start_logpos int,
  200. stop_logf int,
  201. stop_logpos int,
  202. dictionary text
  203. );
  204. create index informix.frl_idx on informix.syscdcfullrowlogging(table_name) in table;
  205. { create log snoop session }
  206. create dba function informix.cdc_opensess
  207. (
  208. informix.lvarchar, {In: server name }
  209. informix.integer, {In: session id or 0 }
  210. informix.integer, {In: timeout in secs for read calls }
  211. informix.integer, {In: max num recs for read calls }
  212. informix.integer, {In: interface behavior maj version }
  213. informix.integer {In: interface behavior min version }
  214. )
  215. returns informix.integer external name '(cdc_apiudr_opensess)'
  216. language C;
  217. { activate a snoop session }
  218. create dba function informix.cdc_activatesess
  219. (
  220. informix.integer, {In: session id }
  221. informix.bigint {In: start lsn }
  222. )
  223. returns informix.integer external name '(cdc_apiudr_activatesess)'
  224. language C;
  225. { deactivate a snoop session }
  226. create dba function informix.cdc_deactivatesess
  227. (
  228. informix.integer {In: session id }
  229. )
  230. returns informix.integer external name '(cdc_apiudr_deactivatesess)'
  231. language C;
  232. { start capture on a table }
  233. create dba function informix.cdc_startcapture
  234. (
  235. informix.integer, {In: session id }
  236. informix.bigint, {In: LSN identifying table }
  237. informix.lvarchar, {In: full table name db@[owner.]table }
  238. informix.lvarchar, {In: comma-separated list of colnames }
  239. informix.integer {In: user data returned on read calls }
  240. )
  241. returns informix.integer external name '(cdc_apiudr_startcapture)'
  242. language C;
  243. { end capture on a table }
  244. create dba function informix.cdc_endcapture
  245. (
  246. informix.integer, {In: session id }
  247. informix.bigint, {In: LSN uniqid identifying table }
  248. informix.lvarchar {In: full table name db@[owner.]table }
  249. )
  250. returns informix.integer external name '(cdc_apiudr_endcapture)'
  251. language C;
  252. { end a snoop session }
  253. create dba function informix.cdc_closesess
  254. (
  255. informix.integer {In: session id }
  256. )
  257. returns informix.integer external name '(cdc_apiudr_closesess)'
  258. language C;
  259. { advance to log record boundary }
  260. create dba function informix.cdc_recboundary
  261. (
  262. informix.integer {In: session id }
  263. )
  264. returns informix.integer external name '(cdc_apiudr_recboundary)'
  265. language C;
  266. { obtain error message text associated with an error name }
  267. create dba function informix.cdc_errortext
  268. (
  269. informix.lvarchar, {In: error name }
  270. informix.lvarchar {In: locale name, SQL NULL for default }
  271. )
  272. returns informix.lvarchar with(HANDLESNULLS)
  273. external name '(cdc_apiudr_errortext)' language C;
  274. { set/unset full row logging for a table }
  275. create dba function informix.cdc_set_fullrowlogging
  276. (
  277. informix.lvarchar, {In: full table name db@owner.table }
  278. informix.integer {In: value 0 to unset, 1 to set }
  279. )
  280. returns informix.integer external name '(SetFullRowLogging)'
  281. language C;