Files
doc-exports/docs/dws/dev/dws_06_0283.html
Lu, Huayi ef0ada5a59 DWS DEV 20240716 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-11-02 09:07:47 +00:00

145 lines
19 KiB
HTML

<a name="EN-US_TOPIC_0000001510161301"></a><a name="EN-US_TOPIC_0000001510161301"></a>
<h1 class="topictitle1">DISCARD</h1>
<div id="body0000001353672540"><div class="section" id="EN-US_TOPIC_0000001510161301__section1491782071619"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001510161301__p45011627111610">Releases internal resources related to database sessions. The <strong id="EN-US_TOPIC_0000001510161301__b81261069384">DISCARD</strong> command is used to reset the status of some or all sessions. Different <strong id="EN-US_TOPIC_0000001510161301__b1112613619385">DISCARD</strong> clauses release different types of resources. The <strong id="EN-US_TOPIC_0000001510161301__b4126665387">DISCARD ALL</strong> command releases all temporary resources related to the current session and resets them to the initial state.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001510161301__section1850716461302"><h4 class="sectiontitle">Precautions</h4><p id="EN-US_TOPIC_0000001510161301__p182765501901">None</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001510161301__section5494150161713"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510161301__screen10647155114416"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">DISCARD</span><span class="w"> </span>
<span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">VOLATILE</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">TEMPORARY</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">TEMP</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="o">|</span>
<span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">TEMP</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">TEMPORARY</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">PLANS</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">SEQUENCES</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="err">}</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001510161301__section1457616197172"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001510161301__ul764516308176"><li id="EN-US_TOPIC_0000001510161301__li20645183071714"><strong id="EN-US_TOPIC_0000001510161301__b1327132220455">VOLATILE { TEMPORARY | TEMP }</strong><p id="EN-US_TOPIC_0000001510161301__p6586181451012">Releases resources related to the VOLATILE temporary table in the current session.</p>
<div class="caution" id="EN-US_TOPIC_0000001510161301__note1085720491055"><span class="cautiontitle"><img src="public_sys-resources/caution_3.0-en-us.png"> </span><div class="cautionbody"><p id="EN-US_TOPIC_0000001510161301__p585715498514">After the <strong id="EN-US_TOPIC_0000001510161301__b0834181918196">DISCARD VOLATILE { TEMPORARY | TEMP }</strong> statement is executed, all volatile temporary table resources in the current session will be cleared. However, the statement cannot clear a single volatile temporary table resource.</p>
</div></div>
</li><li id="EN-US_TOPIC_0000001510161301__li1058234351313"><strong id="EN-US_TOPIC_0000001510161301__b115213468710">TEMP | TEMPORARY</strong><p id="EN-US_TOPIC_0000001510161301__p515173991511">Releases resources related to all temporary tables in the current session, including volatile and global temporary tables.</p>
</li></ul>
<ul id="EN-US_TOPIC_0000001510161301__ul1157183981515"><li id="EN-US_TOPIC_0000001510161301__li515753911153"><strong id="EN-US_TOPIC_0000001510161301__b481405316711">PLANS</strong><p id="EN-US_TOPIC_0000001510161301__p191574397157">Releases all cached query plans in the current session and forces them to be replanned when related <strong id="EN-US_TOPIC_0000001510161301__b10363112842317">PREPARE</strong> statements are used next time.</p>
</li></ul>
<ul id="EN-US_TOPIC_0000001510161301__ul0457681515"><li id="EN-US_TOPIC_0000001510161301__li154416101518"><strong id="EN-US_TOPIC_0000001510161301__b55547561474">SEQUENCES</strong><p id="EN-US_TOPIC_0000001510161301__p173285810156">Discards all cached sequence-related states, including <strong id="EN-US_TOPIC_0000001510161301__b55841251142312">currval()</strong>/<strong id="EN-US_TOPIC_0000001510161301__b72111156182316">lastval()</strong> information and any pre-allocated sequence values that have not been returned through <strong id="EN-US_TOPIC_0000001510161301__b183692614243">nextval()</strong>.</p>
</li></ul>
<ul id="EN-US_TOPIC_0000001510161301__ul0341458191518"><li id="EN-US_TOPIC_0000001510161301__li2034205817159"><strong id="EN-US_TOPIC_0000001510161301__b19994165812718">ALL</strong><p id="EN-US_TOPIC_0000001510161301__p58277142167">Releases all temporary resources related to the current session and resets them to their initial state. This has almost the same effect as executing the following statement sequence:</p>
<pre class="screen" id="EN-US_TOPIC_0000001510161301__screen136152681716">SET SESSION AUTHORIZATION DEFAULT;
RESET ALL;
DEALLOCATE ALL;
CLOSE ALL;
UNLISTEN *;
SELECT pg_advisory_unlock_all();
DISCARD PLANS; DISCARD SEQUENCES;
DISCARD TEMP;</pre>
<div class="caution" id="EN-US_TOPIC_0000001510161301__note359843151811"><span class="cautiontitle"><img src="public_sys-resources/caution_3.0-en-us.png"> </span><div class="cautionbody"><ul id="EN-US_TOPIC_0000001510161301__ul8848029115014"><li id="EN-US_TOPIC_0000001510161301__li584872945018">After <strong id="EN-US_TOPIC_0000001510161301__b11982155892510">DISCARD ALL</strong> is executed successfully, schemas starting with <strong id="EN-US_TOPIC_0000001510161301__b18600184102611">pg_temp</strong> and <strong id="EN-US_TOPIC_0000001510161301__b152109142616">pg_toast_temp</strong> are also deleted.</li><li id="EN-US_TOPIC_0000001510161301__li9671847125115"><strong id="EN-US_TOPIC_0000001510161301__b16510315102612">DISCARD ALL</strong> cannot be executed in a transaction.</li></ul>
</div></div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510161301__section104618513171"><h4 class="sectiontitle">Examples</h4><ul id="EN-US_TOPIC_0000001510161301__ul390911203713"><li id="EN-US_TOPIC_0000001510161301__li5909218374">DISCARD VOLATILE temporary tables<p id="EN-US_TOPIC_0000001510161301__p1755913912304"><a name="EN-US_TOPIC_0000001510161301__li5909218374"></a><a name="li5909218374"></a>After the DISCARD operation is performed, all resources related to volatile temporary tables in the current session are cleared.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510161301__screen1955953910306"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">VOLATILE</span><span class="w"> </span><span class="n">TEMP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">TX1</span><span class="p">(</span><span class="n">A</span><span class="w"> </span><span class="nb">INT</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HASH</span><span class="p">(</span><span class="n">A</span><span class="p">);</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">VOLATILE</span><span class="w"> </span><span class="n">TEMP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">TX2</span><span class="p">(</span><span class="n">A</span><span class="w"> </span><span class="nb">INT</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HASH</span><span class="p">(</span><span class="n">A</span><span class="p">);</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">TX1</span><span class="p">;</span>
<span class="w"> </span><span class="n">a</span>
<span class="c1">---</span>
<span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">TX2</span><span class="p">;</span>
<span class="w"> </span><span class="n">a</span>
<span class="c1">---</span>
<span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
<span class="n">DISCARD</span><span class="w"> </span><span class="k">VOLATILE</span><span class="w"> </span><span class="n">TEMP</span><span class="p">;</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">TX1</span><span class="p">;</span>
<span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">relation</span><span class="w"> </span><span class="ss">&quot;tx1&quot;</span><span class="w"> </span><span class="n">does</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="n">exist</span>
<span class="n">LINE</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">TX1</span><span class="p">;</span>
<span class="w"> </span><span class="o">^</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">TX2</span><span class="p">;</span>
<span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">relation</span><span class="w"> </span><span class="ss">&quot;tx2&quot;</span><span class="w"> </span><span class="n">does</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="n">exist</span>
<span class="n">LINE</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">TX2</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510161301__li980493314711">DISCARD TEMP<div class="p" id="EN-US_TOPIC_0000001510161301__p412313592509"><a name="EN-US_TOPIC_0000001510161301__li980493314711"></a><a name="li980493314711"></a>After <strong id="EN-US_TOPIC_0000001510161301__b11910131715277">DISCARD TEMP</strong> is run, all temporary table resources in the current session are cleared.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510161301__screen18548523470"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">GLOBAL</span><span class="w"> </span><span class="n">TEMP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">t_global_temp</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">);</span>
<span class="n">NOTICE</span><span class="p">:</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="s1">'DISTRIBUTE BY'</span><span class="w"> </span><span class="n">clause</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="n">specified</span><span class="p">.</span><span class="w"> </span><span class="k">Using</span><span class="w"> </span><span class="n">round</span><span class="o">-</span><span class="n">robin</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">distribution</span><span class="w"> </span><span class="k">mode</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="k">default</span><span class="p">.</span>
<span class="n">HINT</span><span class="p">:</span><span class="w"> </span><span class="n">Please</span><span class="w"> </span><span class="n">use</span><span class="w"> </span><span class="s1">'DISTRIBUTE BY'</span><span class="w"> </span><span class="n">clause</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">specify</span><span class="w"> </span><span class="n">suitable</span><span class="w"> </span><span class="k">data</span><span class="w"> </span><span class="n">distribution</span><span class="w"> </span><span class="k">column</span><span class="p">.</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">t_global_temp</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">),(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span>
<span class="k">INSERT</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">2</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">VOLATILE</span><span class="w"> </span><span class="n">TEMP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">t_volatile_temp</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">);</span>
<span class="k">CREATE</span><span class="w"> </span><span class="n">TEMP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">t_temp</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">);</span>
<span class="n">DISCARD</span><span class="w"> </span><span class="n">TEMP</span><span class="p">;</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_global_temp</span><span class="p">;</span>
<span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">b</span>
<span class="c1">---+---</span>
<span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_volatile_temp</span><span class="p">;</span>
<span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">relation</span><span class="w"> </span><span class="ss">&quot;t_volatile_temp&quot;</span><span class="w"> </span><span class="n">does</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="n">exist</span>
<span class="n">LINE</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t_volatile_temp</span><span class="p">;</span>
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_temp</span><span class="p">;</span>
<span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">relation</span><span class="w"> </span><span class="ss">&quot;t_temp&quot;</span><span class="w"> </span><span class="n">does</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="n">exist</span>
<span class="n">LINE</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">t_temp</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
</li></ul>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0118.html">DDL Syntax</a></div>
</div>
</div>