1 package drvddl authid current_user as
2
3 pv_idx_mem number;
4 pv_is_import boolean;
5 pv_master_params varchar2(2000);
6 pv_partition_populate boolean;
7
8 px_partition_error EXCEPTION;
9
10 PARALLEL_OP constant number := 1;
11 CREATE_OP constant number := 16;
12 RESUME_OP constant number := 32;
13
14 P_CREATE_OP constant number := 16 + 1;
15 P_RESUME_OP constant number := 32 + 1;
16 P_SYNC_OP constant number := 64 + 1;
17
18 -- 10169701: Keep track of any tokens which had errors during optimize
19 -- rebuild
20 type text_tab is table of varchar2(64) index by binary_integer;
21 type type_tab is table of number index by binary_integer;
22 opt_rebuild_error_text text_tab;
23 opt_rebuild_error_type type_tab;
24
25 /*----------------------- PartitionCreate -----------------------*/
26
27 PROCEDURE PartitionCreate(
28 ia in sys.ODCIIndexInfo,
29 owner in varchar2,
30 index_name in varchar2,
31 index_partition in varchar2,
32 table_owner in varchar2,
33 table_name in varchar2,
34 table_partition in varchar2,
35 idxmem in number,
36 storage in varchar2,
37 populate in boolean default TRUE,
38 sync_type in varchar2 default NULL,
39 sync_memory in varchar2 default NULL,
40 sync_paradegree in number default NULL,
41 sync_interval in varchar2 default NULL,
42 is_online in boolean default FALSE,
43 sync_dpl in boolean default FALSE
44 );
45
46 /*----------------------- IndexCreate -----------------------*/
47 /*
48 NAME
49 IndexCreate
50
51 DESCRIPTION
52 create an index
53
54 ARGUMENTS
55 owner index owner
56 index_name index name
57 table_owner table owner
58 table_name table name
59 column_name text column name
60 column_type text column type (optional)
61 populate populate/nopopulate
62 para parallel degree
63 langcol language column
64 fmtcol format column name
65 csetcol charset column name
66 configcol charset column name
67 idxmem index memory
68 datastore datastore pref name
69 filter filter pref name
70 section section group pref name
71 lexer lexer pref name
72 wordlist wordlist pref name
73 stoplist stoplist pref name
74 storage storage pref name
75 txntional transactional pref name
76 tree supports ctx_tree
77
78 NOTES
79
80 EXCEPTIONS
81
82 RETURNS
83
84 */
85 PROCEDURE IndexCreate(
86 ia in sys.odciindexinfo,
87 owner in varchar2,
88 index_name in varchar2,
89 index_part in varchar2,
90 table_owner in varchar2,
91 table_name in varchar2,
92 table_part in varchar2,
93 column_name in varchar2,
94 column_type in varchar2,
95 call_prop in number,
96 populate in boolean,
97 para in number,
98 langcol in varchar2,
99 fmtcol in varchar2,
100 csetcol in varchar2,
101 idxmem in number,
102 datastore in varchar2,
103 filter in varchar2,
104 section in varchar2,
105 lexer in varchar2,
106 wordlist in varchar2,
107 stoplist in varchar2,
108 storage in varchar2,
109 txntional in varchar2,
110 sync_type in varchar2,
111 sync_memory in varchar2,
112 sync_paradegree in number,
113 sync_interval in varchar2,
114 tree in boolean,
115 sync_dpl in boolean,
116 configcol in varchar2
117 );
118
119 /*----------------------- IndexDrop -------------------------*/
120 /*
121 NAME
122 IndexDrop
123
124 DESCRIPTION
125 drop an index
126
127 ARGUMENTS
128 ia index info
129 */
130 PROCEDURE IndexDrop(
131 ia in sys.ODCIIndexInfo,
132 owner in varchar2,
133 index_name in varchar2,
134 call_prop in number
135 );
136
137 /*----------------------- IndexTruncate ---------------------*/
138 /*
139 NAME
140 IndexTruncate
141
142 DESCRIPTION
143 truncate an index
144
145 ARGUMENTS
146 ia index info
147 owner index owner
148 index_name index name
149 ixp_name index partition name
150 call_prop call property
151 */
152 PROCEDURE IndexTruncate(
153 ia in sys.odciindexinfo,
154 owner in varchar2,
155 index_name in varchar2,
156 ixp_name in varchar2,
157 call_prop in number
158
159 );
160
161 /*----------------------- IndexTransport -----------------------*/
162 /*
163 NAME
164 IndexTransport
165
166 DESCRIPTION
167 transport tablespace support
168
169 ARGUMENTS
170 owner index owner
171 index_name index name
172 index_part index partition name
173 table_owner table owner
174 table_name table name
175 table_part table partition name
176
177 NOTES
178
179 EXCEPTIONS
180
181 RETURNS
182
183 */
184 PROCEDURE IndexTransport(
185 owner in varchar2,
186 index_name in varchar2,
187 index_part in varchar2,
188 table_owner in varchar2,
189 table_name in varchar2,
190 table_part in varchar2,
191 IndexInfoFlags in number,
192 CallProperty in number
193 );
194
195 /*----------------------- PartitionSplit -----------------------*/
196 /*
197 NAME
198 PartitionSplit
199
200 DESCRIPTION
201 split one partition into two
202
203 ARGUMENTS
204 ia ODCIIndexInfo for the spliting partition
205 part1 ODCIPartInfo for resulting partition
206 part2 ODCIPartInfo for resulting partition
207
208
209 NOTES
210
211 EXCEPTIONS
212
213 RETURNS
214
215 */
216 PROCEDURE PartitionSplit(
217 ia in sys.odciindexinfo,
218 part1 in sys.odcipartinfo,
219 part2 in sys.odcipartinfo
220 );
221
222 /*----------------------- PartitionMerge -----------------------*/
223 /*
224 NAME
225 PartitionMerge
226
227 DESCRIPTION
228 split one partition into two
229
230 ARGUMENTS
231 ia ODCIIndexInfo for the resulting partition
232 part1 ODCIPartInfo for one of the merging partitions
233 part2 ODCIPartInfo for one of the merging partition
234
235
236 NOTES
237
238 EXCEPTIONS
239
240 RETURNS
241
242 */
243 PROCEDURE PartitionMerge(
244 ia in sys.odciindexinfo,
245 part1 in sys.odcipartinfo,
246 part2 in sys.odcipartinfo
247 );
248
249 /*----------------------- PartitionExchange -----------------------*/
250 /*
251 NAME
252 PartitionExchange
253
254 DESCRIPTION
255 Swap a partition with a table
256
257 ARGUMENTS
258 ia ODCIIndexInfo for the partition index to be exchanged
259 ia1 ODCIIndexinfo for the index on the table
260
261
262 NOTES
263
264 EXCEPTIONS
265
266 RETURNS
267
268 */
269 PROCEDURE PartitionExchange(
270 ia in sys.odciindexinfo,
271 ia1 in sys.odciindexinfo
272 );
273
274 /*----------------------- IndexRename ---------------------*/
275 /*
276 NAME
277 IndexRename
278
279 DESCRIPTION
280 rename an index
281
282 ARGUMENTS
283 ia index info
284 owner index owner
285 index_name index name
286 new_name new name
287 */
288 PROCEDURE IndexRename(
289 ia in sys.odciindexinfo,
290 owner in varchar2,
291 index_name in varchar2,
292 new_name in varchar2
293 );
294
295 /*----------------------- IndexColRename ---------------------*/
296 /*
297 NAME
298 IndexColRename
299
300 DESCRIPTION
301 rename an index column
302
303 ARGUMENTS
304 ia index info
305 owner index owner
306 index_name index name
307 new_name new name
308 */
309 PROCEDURE IndexColRename(
310 ia in sys.odciindexinfo,
311 owner in varchar2,
312 index_name in varchar2,
313 new_name in varchar2
314 );
315
316 /*----------------------- IndexReplace -------------------------*/
317 /*
318 NAME
319 IndexReplace
320
321 DESCRIPTION
322 rebuild an index, replacing preferences as needed
323
324 ARGUMENTS
325 ia index info
326 idx index record
327 idxmem index memory
328 para parallel degree
329 langcol language column
330 fmtcol format column name
331 csetcol charset column name
332 configcol configuration column name
333 datastore datastore pref name
334 filter filter pref name
335 section section group pref name
336 lexer lexer pref name
337 wordlist wordlist pref name
338 stoplist stoplist pref name
339 storage storage pref name
340 isonline is online ?
341 sync_dpl direct path loading?
342 section_name section name
343 */
344 PROCEDURE IndexReplace(
345 ia in sys.ODCIIndexInfo,
346 idx in out nocopy dr_def.idx_rec,
347 idxmem in number,
348 para in number,
349 langcol in varchar2,
350 fmtcol in varchar2,
351 csetcol in varchar2,
352 datastore in varchar2,
353 filter in varchar2,
354 section in varchar2,
355 lexer in varchar2,
356 wordlist in varchar2,
357 stoplist in varchar2,
358 storage in varchar2,
359 txntional in varchar2,
360 sync_type in varchar2,
361 sync_memory in varchar2,
362 sync_paradegree in number,
363 sync_interval in varchar2,
364 isonline in boolean default FALSE,
365 metadataonly in boolean default FALSE,
366 populate in boolean default TRUE,
367 sync_dpl in boolean default FALSE,
368 section_name in varchar2 default NULL,
369 configcol in varchar2 default NULL
370 );
371
372 /*----------------------- IndexPartReplace -------------------------*/
373 /*
374 NAME
375 IndexPartReplace
376
377 DESCRIPTION
378 rebuild a index partition, replacing preferences as needed
379
380 ARGUMENTS
381 ia index info
382 idx index record
383 ixp index partition
384 idxmem index memory
385 storage storage pref name
386 para parallel degree
387 */
388 PROCEDURE IndexPartReplace(
389 ia in sys.ODCIIndexInfo,
390 idx in dr_def.idx_rec,
391 ixp in dr_def.ixp_rec,
392 idxmem in number,
393 storage in varchar2,
394 para in number,
395 sync_type in varchar2,
396 sync_memory in varchar2,
397 sync_paradegree in number,
398 sync_interval in varchar2,
399 isonline in boolean default FALSE,
400 metadataonly in boolean default FALSE,
401 populate in boolean default TRUE,
402 sync_dpl in boolean default FALSE
403 );
404
405 /*----------------------- IndexResume -------------------------*/
406 /*
407 NAME
408 IndexResume
409
410 DESCRIPTION
411 resume index creation
412
413 ARGUMENTS
414 ia index info
415 idx index record
416 para parallel degree
417 idxmem index memory
418 isOnline is online?
419 isreplace called from replace
420 */
421 PROCEDURE IndexResume(
422 ia in sys.ODCIIndexInfo,
423 idx in dr_def.idx_rec,
424 para in number,
425 idxmem in number,
426 isonline in boolean default FALSE,
427 isreplace in boolean default FALSE,
428 populate in boolean default TRUE
429 );
430
431 /*----------------------- IndexPartResume -------------------------*/
432 /*
433 NAME
434 IndexPartResume
435
436 DESCRIPTION
437 resume index creation on a partition
438
439 ARGUMENTS
440 ia index info which also has partition info
441 idx index record
442 para parallel degree
443 idxmem index memory
444 */
445 PROCEDURE IndexPartResume(
446 ia in sys.ODCIIndexInfo,
447 idx in dr_def.idx_rec,
448 para in number,
449 idxmem in number,
450 isOnline in boolean default FALSE,
451 isReplace in boolean default FALSE,
452 populate in boolean default TRUE
453 );
454
455 /*----------------------- IndexOptimize -------------------------*/
456 /*
457 NAME
458 IndexOptimize
459
460 DESCRIPTION
461 optimize the index
462
463 ARGUMENTS
464 idx index record
465 ixpname partition name
466 operation FAST, FULL, or TOKEN
467 maxtime maxtime for gc
468 token text token string
469 */
470 PROCEDURE IndexOptimize(
471 idx in dr_def.idx_rec,
472 ixpname in varchar2,
473 operation in varchar2,
474 maxtime in number,
475 token in varchar2,
476 ttype in number default 0,
477 pdegree in number default 1,
478 memory in number default 0,
479 background in number default 0
480 );
481
482 TYPE popcurtyp is ref cursor return ctxsys.dr$number_sequence%rowtype;
483
484 FUNCTION IndexOptimizeParFn(
485 crsr in popcurtyp,
486 idxownid in number,
487 idxowner in varchar2,
488 idxname in varchar2,
489 ixpname in varchar2,
490 shadow_itab in varchar2,
491 shadow_stab in varchar2,
492 nextid in number,
493 optmode in number,
494 maxtime in number,
495 logfile in varchar2,
496 maxhash in number,
497 ttype in number,
498 background in number
499 ) return varchar2;
500
501 /*----------------------- SplitDollari -------------------------*/
502 /*
503 NAME
504 SplitDollari
505
506 DESCRIPTION
507 Split the $I table into multiple $I tables
508
509 ARGUMENTS
510 idx index record
511 ixpname the name of the partition whose $I table we are
512 splitting(the $I is not modified)
516 name gets appended otherwise:
513 mapping_tab the table that maps rowids to partition names
514 name_prefix the name of the output table in case of less than
515 two partitions, a name to which the partition
517 name_prefix||'_'||part_name
518 tspace the name of the tablespace where additional
519 mapping tables will be created (for cleanup
520 purposes in case of core dump)
521 */
522 PROCEDURE SplitDollari(
523 idx in dr_def.idx_rec,
524 ixpname in varchar2,
525 mapping_tab in varchar2,
526 name_prefix in varchar2,
527 tspace in varchar2 default null
528 );
529
530 /*----------------------- IndexSync -------------------------*/
531 /*
532 NAME
533 IndexSync
534
535 DESCRIPTION
536 sync the index
537
538 ARGUMENTS
539 idx index record
540 idxmem index memory
541 ixpname index partition name
542 direct_path should we use direct-path inserts ?
543 */
544 PROCEDURE IndexSync(
545 idx in dr_def.idx_rec,
546 ixpname in varchar2,
547 idxmem in number,
548 parallel_degree in number default 1,
549 direct_path in boolean default false,
550 maxtime in number,
551 locking in number
552 );
553
554 /*----------------------- LockBaseTable -------------------------*/
555 /*
556 NAME
557 LockBaseTable
558
559 DESCRIPTION
560 lock the base table
561
562 ARGUMENTS
563 table_own name of table owner
564 table_name name of table
565 table_part name of table partition (if any)
566 */
567 PROCEDURE LockBaseTable(
568 table_own in varchar2,
569 table_name in varchar2,
570 table_part in varchar2 default NULL
571 );
572
573 PROCEDURE ProcessOnlinePending (
574 table_own in varchar2,
575 table_name in varchar2,
576 index_own in varchar2,
577 index_name in varchar2,
578 polid in number,
579 is_part in boolean,
580 is_online in boolean,
581 is_alter in boolean,
582 table_partition in varchar2 default NULL,
583 index_partition in varchar2 default NULL
584 ) ;
585
586 /*----------------------- CDIUpdate -------------------------*/
587
588 PROCEDURE CDIUpdate(
589 polid in number,
590 ia in sys.odciindexinfo,
591 env in sys.ODCIEnv,
592 ridlist in sys.odciridlist,
593 oldvallist in sys.odcicolarrayvallist,
594 newvallist in sys.odcicolarrayvallist
595 );
596
597 PROCEDURE RIOCleanup(
598 idx_shadow in dr_def.idx_rec
599 );
600
601 PROCEDURE PartCleanup(
602 idx_shadow dr_def.idx_rec,
603 ixp_shadow dr_def.ixp_rec
604 );
605
606 FUNCTION CursorToBitVector(
607 crsr in popcurtyp,
608 numbits in number) RETURN varchar2;
609
610 PROCEDURE add_big_io(
611 idx in dr_def.idx_rec
612 );
613
614 PROCEDURE remove_big_io(
615 idx in dr_def.idx_rec
616 );
617
618 PROCEDURE add_separate_offsets(
619 idx in dr_def.idx_rec
620 );
621
622 PROCEDURE add_stage_itab(
623 idx in dr_def.idx_rec,
624 ixp in dr_def.ixp_rec default NULL
625 );
626
627 PROCEDURE remove_stage_itab(
628 idx in dr_def.idx_rec,
629 ixp in dr_def.ixp_rec default NULL
630 );
631
632 /*--------------------------- field_to_mdata -------------------------------*/
633 /* convert a field section to mdata */
634 PROCEDURE field_to_mdata(
635 idx in dr_def.idx_rec,
636 fsec in varchar2,
637 read_only in boolean
638 );
639
640 /*------------------------ IndexMapLanguagesDriver -------------------------*/
641 /* Driver for IndexMapLanguages - partitioned and non partitioned case. */
642 procedure IndexMapLanguagesDriver(
643 idx in dr_def.idx_rec
644 );
645
646 /*--------------------------- IndexMapLanguages ---------------------------*/
647 /* Map language column in base table to mdata sections */
648 procedure IndexMapLanguages(
649 idx in dr_def.idx_rec,
650 ixp in dr_def.ixp_rec,
651 pdegree in number,
652 flags in binary_integer,
653 sectyp in binary_integer,
654 hash_usable in number
655 );
656
657 /*---------------------- AddDocLexerMDATATokens ------------------------*/
658 /* Add DR$ML MDATA Tokens to $I */
659 PROCEDURE AddDocLexerMDATATokens(
660 ia in sys.ODCIIndexInfo,
661 idx in dr_def.idx_rec
662 );
663
664 /*---------------------- RemDocLexerMDATATokens ------------------------*/
665 /* Remove DR$ML MDATA Tokens from $I(s) */
666 PROCEDURE RemDocLexerMDATATokens(
667 ia in sys.ODCIIndexInfo,
668 idx in dr_def.idx_rec
669 );
670
671 /*--------------------------- idx_add_slx ------------------------------*/
672 /* Add sublexer to the Index */
673 PROCEDURE idx_add_slx(
677 language in varchar2,
674 ia in sys.ODCIIndexInfo,
675 idx in dr_def.idx_rec,
676 sub_lexer in varchar2,
678 alt_value in varchar2,
679 language_dependent in boolean default TRUE
680 );
681
682 /*--------------------------- idx_rem_slx ------------------------------*/
683 /* Remove sublexer from the Index */
684 PROCEDURE idx_rem_slx(
685 ia in sys.ODCIIndexInfo,
686 idx in dr_def.idx_rec,
687 sub_lexer in varchar2
688 );
689
690 /*--------------------------- idx_add_sw ------------------------------*/
691 /* Add stopword to the Index */
692 PROCEDURE idx_add_sw(
693 ia in sys.ODCIIndexInfo,
694 idx in dr_def.idx_rec,
695 stopword in varchar2,
696 language in varchar2,
697 language_dependent in boolean default TRUE,
698 secname in varchar2
699 );
700
701 /*--------------------------- idx_rem_sw ------------------------------*/
702 /* Remove stopword from the Index */
703 PROCEDURE idx_rem_sw(
704 ia in sys.ODCIIndexInfo,
705 idx in dr_def.idx_rec,
706 stopword in varchar2,
707 language in varchar2,
708 for_all in boolean default FALSE
709 );
710
711 /*--------------------------- repopulate_dollarn ---------------------------*/
712 /* repopulate_dollarn - repopulate $N as opposite of $K */
713 PROCEDURE repopulate_dollarn(
714 idx in dr_def.idx_rec,
715 ixp in dr_def.ixp_rec
716 );
717
718 /*------------------------------ set_read_mode -----------------------------*/
719 /* set_read_mode - Set read mode to TRUE/FALSE, for given partition */
720 PROCEDURE set_read_mode(
721 ia in sys.ODCIIndexInfo,
722 idx in dr_def.idx_rec,
723 ixp in dr_def.ixp_rec default NULL,
724 read_mode in boolean
725 );
726
727 end drvddl;