This file is indexed.

/usr/share/doc/postgresql-10-pgq3/html/files/internal-sql.html is in postgresql-10-pgq3 3.2.6-7.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Internal Functions - PgQ</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/prettify.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>

<!--  Generated by Natural Docs, version 1.51 -->
<!--  http://www.naturaldocs.org  -->

<!-- saved from url=(0026)http://www.naturaldocs.org -->




<div id=Content><div class="CSection"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="Internal_Functions"></a>Internal Functions</h1><div class=CBody><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#Internal_Functions" >Internal Functions</a></td><td class=SDescription></td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#Low-level_event_handling" >Low-level event handling</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.batch_event_sql(1)" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">pgq.<wbr>batch_event_sql(1)</a></td><td class=SDescription>Creates SELECT statement that fetches events for this batch.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.batch_event_tables(1)" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">pgq.<wbr>batch_event_tables(1)</a></td><td class=SDescription>Returns set of table names where this batch events may reside.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.event_retry_raw(12)" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">pgq.<wbr>event_retry_raw(12)</a></td><td class=SDescription>Allows full control over what goes to retry queue.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.find_tick_helper(6)" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">pgq.<wbr>find_tick_helper(6)</a></td><td class=SDescription>Helper function for pgq.next_batch_custom() to do extended tick search.</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#Ticker" >Ticker</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.ticker(3)" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">pgq.<wbr>ticker(3)</a></td><td class=SDescription>External ticker: Insert a tick with a particular tick_id and timestamp.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.ticker(1)" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">pgq.<wbr>ticker(1)</a></td><td class=SDescription>Check if tick is needed for the queue and insert it.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.ticker(0)" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">pgq.<wbr>ticker(0)</a></td><td class=SDescription>Creates ticks for all unpaused queues which dont have external ticker.</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#Periodic_maintenence" >Periodic maintenence</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.maint_retry_events(0)" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">pgq.<wbr>maint_retry_events(0)</a></td><td class=SDescription>Moves retry events back to main queue.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.maint_rotate_tables_step1(1)" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">pgq.<wbr>maint_rotate_tables_step1(1)</a></td><td class=SDescription>Rotate tables for one queue.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.maint_rotate_tables_step2(0)" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">pgq.<wbr>maint_rotate_tables_step2(0)</a></td><td class=SDescription>Stores the txid when the rotation was visible. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.maint_tables_to_vacuum(0)" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">pgq.<wbr>maint_tables_to_vacuum(0)</a></td><td class=SDescription>Returns list of tablenames that need frequent vacuuming.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.maint_operations(0)" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">pgq.<wbr>maint_operations(0)</a></td><td class=SDescription>Returns list of functions to call for maintenance.</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#Random_utility_functions" >Random utility functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.grant_perms(1)" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')">pgq.<wbr>grant_perms(1)</a></td><td class=SDescription>Make event tables readable by public.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.grant_perms_from(1)" >pgq.<wbr>grant_perms_from(1)</a></td><td class=SDescription>Copy grants from one table to another. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.tune_storage(1)" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')">pgq.<wbr>tune_storage(1)</a></td><td class=SDescription>Tunes storage settings for queue data tables</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.force_tick(2)" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')">pgq.<wbr>force_tick(2)</a></td><td class=SDescription>Simulate lots of events happening to force ticker to tick.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.seq_getval(1)" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')">pgq.<wbr>seq_getval(1)</a></td><td class=SDescription>Read current last_val from seq, without affecting it.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#pgq.seq_setval(2)" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')">pgq.<wbr>seq_setval(2)</a></td><td class=SDescription>Like setval() but does not allow going back.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#pgq.quote_fqname(1)" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')">pgq.<wbr>quote_fqname(1)</a></td><td class=SDescription>Quete fully-qualified object name for SQL.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>

<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Low-level_event_handling"></a>Low-level event handling</h3></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.batch_event_sql(1)"></a>pgq.<wbr>batch_event_sql(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.batch_event_sql(</td><td class="PType  prettyprint " nowrap>x_batch_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint</td><td class="PAfterParameters  prettyprint "nowrap>) returns text</td></tr></table></td></tr></table></blockquote><p>Creates SELECT statement that fetches events for this batch.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>x_batch_id</td><td class=CDLDescription>ID of a active batch.</td></tr></table><h4 class=CHeading>Returns</h4><p>SQL statement.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.batch_event_tables(1)"></a>pgq.<wbr>batch_event_tables(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.batch_event_tables(</td><td class="PType  prettyprint " nowrap>x_batch_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint</td><td class="PAfterParameters  prettyprint "nowrap>) returns setof text</td></tr></table></td></tr></table></blockquote><p>Returns set of table names where this batch events may reside.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>x_batch_id</td><td class=CDLDescription>ID of a active batch.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.event_retry_raw(12)"></a>pgq.<wbr>event_retry_raw(12)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.event_retry_raw(</td><td class="PType  prettyprint " nowrap>x_queue&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_consumer&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_retry_after&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_time&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_retry&nbsp;</td><td class="PParameter  prettyprint " nowrap>integer,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_type&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_data&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra1&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra2&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra3&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra4&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote><p>Allows full control over what goes to retry queue.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>x_queue</td><td class=CDLDescription>name of the queue</td></tr><tr><td class=CDLEntry>x_consumer</td><td class=CDLDescription>name of the consumer</td></tr><tr><td class=CDLEntry>x_retry_after</td><td class=CDLDescription>when the event should be processed again</td></tr><tr><td class=CDLEntry>x_ev_id</td><td class=CDLDescription>event id</td></tr><tr><td class=CDLEntry>x_ev_time</td><td class=CDLDescription>creation time</td></tr><tr><td class=CDLEntry>x_ev_retry</td><td class=CDLDescription>retry count</td></tr><tr><td class=CDLEntry>x_ev_type</td><td class=CDLDescription>user data</td></tr><tr><td class=CDLEntry>x_ev_data</td><td class=CDLDescription>user data</td></tr><tr><td class=CDLEntry>x_ev_extra1</td><td class=CDLDescription>user data</td></tr><tr><td class=CDLEntry>x_ev_extra2</td><td class=CDLDescription>user data</td></tr><tr><td class=CDLEntry>x_ev_extra3</td><td class=CDLDescription>user data</td></tr><tr><td class=CDLEntry>x_ev_extra4</td><td class=CDLDescription>user data</td></tr></table><h4 class=CHeading>Returns</h4><p>Event ID.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.find_tick_helper(6)"></a>pgq.<wbr>find_tick_helper(6)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.find_tick_helper(</td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_queue_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>int4,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_prev_tick_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_prev_tick_time&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_prev_tick_seq&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_min_count&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_min_interval&nbsp;</td><td class="PParameter  prettyprint " nowrap>interval,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>next_tick_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>next_tick_time&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>next_tick_seq&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8</td><td class="PAfterParameters  prettyprint "nowrap>) as</td></tr></table></td></tr></table></blockquote><p>Helper function for pgq.next_batch_custom() to do extended tick search.</p></div></div></div>

<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Ticker"></a>Ticker</h3></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.ticker(3)"></a>pgq.<wbr>ticker(3)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.ticker(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_tick_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_orig_timestamp&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_event_seq&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote><p>External ticker: Insert a tick with a particular tick_id and timestamp.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i_queue_name</td><td class=CDLDescription>Name of the queue</td></tr><tr><td class=CDLEntry>i_tick_id</td><td class=CDLDescription>Id of new tick.</td></tr></table><h4 class=CHeading>Returns</h4><p>Tick id.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.ticker(1)"></a>pgq.<wbr>ticker(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.ticker(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote><p>Check if tick is needed for the queue and insert it.</p><p>For pgqadm usage.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i_queue_name</td><td class=CDLDescription>Name of the queue</td></tr></table><h4 class=CHeading>Returns</h4><p>Tick id or NULL if no tick was done.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.ticker(0)"></a>pgq.<wbr>ticker(0)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.ticker() returns bigint</td></tr></table></blockquote><p>Creates ticks for all unpaused queues which dont have external ticker.</p><h4 class=CHeading>Returns</h4><p>Number of queues that were processed.</p></div></div></div>

<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Periodic_maintenence"></a>Periodic maintenence</h3></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.maint_retry_events(0)"></a>pgq.<wbr>maint_retry_events(0)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.maint_retry_events() returns integer</td></tr></table></blockquote><p>Moves retry events back to main queue.</p><p>It moves small amount at a time.&nbsp;  It should be called until it returns 0</p><h4 class=CHeading>Returns</h4><p>Number of events processed.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.maint_rotate_tables_step1(1)"></a>pgq.<wbr>maint_rotate_tables_step1(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.maint_rotate_tables_step1(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns integer</td></tr></table></td></tr></table></blockquote><p>Rotate tables for one queue.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i_queue_name</td><td class=CDLDescription>Name of the queue</td></tr></table><h4 class=CHeading>Returns</h4><p>0</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.maint_rotate_tables_step2(0)"></a>pgq.<wbr>maint_rotate_tables_step2(0)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.maint_rotate_tables_step2() returns integer</td></tr></table></blockquote><p>Stores the txid when the rotation was visible.&nbsp;  It should be called in separate transaction than pgq.maint_rotate_tables_step1()</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.maint_tables_to_vacuum(0)"></a>pgq.<wbr>maint_tables_to_vacuum(0)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.maint_tables_to_vacuum() returns setof text</td></tr></table></blockquote><p>Returns list of tablenames that need frequent vacuuming.</p><p>The goal is to avoid hardcoding them into maintenance process.</p><h4 class=CHeading>Returns</h4><p>List of table names.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.maint_operations(0)"></a>pgq.<wbr>maint_operations(0)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.maint_operations(</td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>func_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>func_arg&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns setof record</td></tr></table></td></tr></table></blockquote><p>Returns list of functions to call for maintenance.</p><p>The goal is to avoid hardcoding them into maintenance process.</p><h4 class=CHeading>Function signature</h4><p>Function should take either 1 or 0 arguments and return 1 if it wants to be called immediately again, 0 if not.</p><h4 class=CHeading>Returns</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>func_name</td><td class=CDLDescription>Function to call</td></tr><tr><td class=CDLEntry>func_arg</td><td class=CDLDescription>Optional argument to function (queue name)</td></tr></table></div></div></div>

<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Random_utility_functions"></a>Random utility functions</h3></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.grant_perms(1)"></a>pgq.<wbr>grant_perms(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.grant_perms(</td><td class="PType  prettyprint " nowrap>x_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns integer</td></tr></table></td></tr></table></blockquote><p>Make event tables readable by public.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>x_queue_name</td><td class=CDLDescription>Name of the queue.</td></tr></table><h4 class=CHeading>Returns</h4><p>nothing</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.grant_perms_from(1)"></a>pgq.<wbr>grant_perms_from(1)</h3><div class=CBody><p>Copy grants from one table to another.&nbsp; Workaround for missing GRANTS option for CREATE TABLE LIKE.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.tune_storage(1)"></a>pgq.<wbr>tune_storage(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.tune_storage(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns integer</td></tr></table></td></tr></table></blockquote><p>Tunes storage settings for queue data tables</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.force_tick(2)"></a>pgq.<wbr>force_tick(2)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.force_tick(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote><p>Simulate lots of events happening to force ticker to tick.</p><p>Should be called in loop, with some delay until last tick changes or too much time is passed.</p><p>Such function is needed because paraller calls of pgq.ticker() are dangerous, and cannot be protected with locks as snapshot is taken before locking.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i_queue_name</td><td class=CDLDescription>Name of the queue</td></tr></table><h4 class=CHeading>Returns</h4><p>Currently last tick id.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.seq_getval(1)"></a>pgq.<wbr>seq_getval(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.seq_getval(</td><td class="PType  prettyprint " nowrap>i_seq_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote><p>Read current last_val from seq, without affecting it.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i_seq_name</td><td class=CDLDescription>Name of the sequence</td></tr></table><h4 class=CHeading>Returns</h4><p>last value.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.seq_setval(2)"></a>pgq.<wbr>seq_setval(2)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.seq_setval(</td><td class="PType  prettyprint " nowrap>i_seq_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_new_value&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote><p>Like setval() but does not allow going back.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i_seq_name</td><td class=CDLDescription>Name of the sequence</td></tr><tr><td class=CDLEntry>i_new_value</td><td class=CDLDescription>new value</td></tr></table><h4 class=CHeading>Returns</h4><p>current last value.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="pgq.quote_fqname(1)"></a>pgq.<wbr>quote_fqname(1)</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.quote_fqname(</td><td class="PType  prettyprint " nowrap>i_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns text</td></tr></table></td></tr></table></blockquote><p>Quete fully-qualified object name for SQL.</p><p>First dot is taken as schema separator.</p><p>If schema is missing, &lsquo;public&rsquo; is assumed.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i_name</td><td class=CDLDescription>fully qualified object name.</td></tr></table><h4 class=CHeading>Returns</h4><p>Quoted name.</p></div></div></div>

</div><!--Content-->


<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->


<div id=Menu><div class=MTitle>PgQ<div class=MSubTitle>Database API</div></div><div class=MEntry><div class=MFile><a href="external-sql.html">Public Functions</a></div></div><div class=MEntry><div class=MFile><a href="triggers-sql.html">Public Triggers</a></div></div><div class=MEntry><div class=MFile id=MSelected>Internal Functions</div></div><div class=MEntry><div class=MFile><a href="schema-sql.html">Internal Tables</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/DatabaseTables.html">Database Tables</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div></div></div></div><script type="text/javascript"><!--
var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="DatabaseTables">Database Tables</option><option value="Functions">Functions</option></select></div></div><!--Menu-->



<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.batch_event_sql(</td><td class="PType  prettyprint " nowrap>x_batch_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint</td><td class="PAfterParameters  prettyprint "nowrap>) returns text</td></tr></table></td></tr></table></blockquote>Creates SELECT statement that fetches events for this batch.</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.batch_event_tables(</td><td class="PType  prettyprint " nowrap>x_batch_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint</td><td class="PAfterParameters  prettyprint "nowrap>) returns setof text</td></tr></table></td></tr></table></blockquote>Returns set of table names where this batch events may reside.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.event_retry_raw(</td><td class="PType  prettyprint " nowrap>x_queue&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_consumer&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_retry_after&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_time&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_retry&nbsp;</td><td class="PParameter  prettyprint " nowrap>integer,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_type&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_data&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra1&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra2&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra3&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>x_ev_extra4&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote>Allows full control over what goes to retry queue.</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.find_tick_helper(</td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_queue_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>int4,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_prev_tick_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_prev_tick_time&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_prev_tick_seq&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_min_count&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>in&nbsp;</td><td class="PType  prettyprint " nowrap>i_min_interval&nbsp;</td><td class="PParameter  prettyprint " nowrap>interval,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>next_tick_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>next_tick_time&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>next_tick_seq&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8</td><td class="PAfterParameters  prettyprint "nowrap>) as</td></tr></table></td></tr></table></blockquote>Helper function for pgq.next_batch_custom() to do extended tick search.</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.ticker(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_tick_id&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_orig_timestamp&nbsp;</td><td class="PParameter  prettyprint " nowrap>timestamptz,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_event_seq&nbsp;</td><td class="PParameter  prettyprint " nowrap>bigint</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote>External ticker: Insert a tick with a particular tick_id and timestamp.</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.ticker(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote>Check if tick is needed for the queue and insert it.</div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.ticker() returns bigint</td></tr></table></blockquote>Creates ticks for all unpaused queues which dont have external ticker.</div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.maint_retry_events() returns integer</td></tr></table></blockquote>Moves retry events back to main queue.</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.maint_rotate_tables_step1(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns integer</td></tr></table></td></tr></table></blockquote>Rotate tables for one queue.</div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.maint_rotate_tables_step2() returns integer</td></tr></table></blockquote>Stores the txid when the rotation was visible. </div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">pgq.maint_tables_to_vacuum() returns setof text</td></tr></table></blockquote>Returns list of tablenames that need frequent vacuuming.</div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.maint_operations(</td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>func_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PTypePrefix  prettyprint " nowrap>out&nbsp;</td><td class="PType  prettyprint " nowrap>func_arg&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns setof record</td></tr></table></td></tr></table></blockquote>Returns list of functions to call for maintenance.</div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.grant_perms(</td><td class="PType  prettyprint " nowrap>x_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns integer</td></tr></table></td></tr></table></blockquote>Make event tables readable by public.</div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.tune_storage(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns integer</td></tr></table></td></tr></table></blockquote>Tunes storage settings for queue data tables</div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.force_tick(</td><td class="PType  prettyprint " nowrap>i_queue_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote>Simulate lots of events happening to force ticker to tick.</div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.seq_getval(</td><td class="PType  prettyprint " nowrap>i_seq_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote>Read current last_val from seq, without affecting it.</div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.seq_setval(</td><td class="PType  prettyprint " nowrap>i_seq_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text,</td></tr><tr><td></td><td class="PType  prettyprint " nowrap>i_new_value&nbsp;</td><td class="PParameter  prettyprint " nowrap>int8</td><td class="PAfterParameters  prettyprint "nowrap>) returns bigint</td></tr></table></td></tr></table></blockquote>Like setval() but does not allow going back.</div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>pgq.quote_fqname(</td><td class="PType  prettyprint " nowrap>i_name&nbsp;</td><td class="PParameter  prettyprint " nowrap>text</td><td class="PAfterParameters  prettyprint "nowrap>) returns text</td></tr></table></td></tr></table></blockquote>Quete fully-qualified object name for SQL.</div></div><!--END_ND_TOOLTIPS-->




<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>


<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>