首页 > 其他分享 >what is NamedTupleStore?

what is NamedTupleStore?

时间:2024-07-08 09:52:16浏览次数:11  
标签:what transition newtable ins NamedTupleStore base TABLE table

What

NamedTuplestore 按字面意思理解,就是一个有名字的 tuplestore, 那估计就不是一个正常的表。根据 PostgreSQL 的官方叫法,NamedTuplestoreScan 对应的表称为为 Ephemeral Named Relation, 中文翻译为 短暂的命名关系.

When

在使用触发器的时候会使用到该特性

How

CREATE TABLE transition_table_base (id int PRIMARY KEY, val text);

CREATE FUNCTION transition_table_base_ins_func()
  RETURNS trigger
  LANGUAGE plpgsql
AS $$
DECLARE
  t text;
  l text;
BEGIN
  t = '';
  FOR l IN EXECUTE
           $q$
             EXPLAIN (TIMING off, COSTS off, VERBOSE on)
             SELECT * FROM newtable
           $q$ LOOP
    t = t || l || E'\n';
  END LOOP;

  RAISE INFO '%', t;
  RETURN new;
END;
$$;

-- `AFTER INSERT` and `STATEMENT` trigger
CREATE TRIGGER transition_table_base_ins_trig
  AFTER INSERT ON transition_table_base
  REFERENCING NEW TABLE AS newtable
  FOR EACH STATEMENT
  EXECUTE PROCEDURE transition_table_base_ins_func();

上面的 SQL 和 NamedTuplestore 关联的是 REFERENCING NEW TABLE AS newtable. newtable 表在触发器函数中被使用。与之关联的还有 OLD TABLE as oldtable, 但本例中使用的是 AFTER INSERT, 因 PG 限制,不能使用。

可以通过下面这条 SQL 查看表关联的触发器,

select * from pg_trigger where tgrelid = 'transition_table_base'::regclass::oid \gx

对于其他触发器类型也是可以的,

-- 先删除已有的触发器
drop trigger transition_table_base_ins_trig on transition_table_base;

-- `AFTER UPDATE` and `FOR EACH ROW` trigger
CREATE TRIGGER transition_table_base_ins_trig_row
  AFTER UPDATE ON transition_table_base
  REFERENCING OLD TABLE AS oldtable NEW TABLE AS newtable
  FOR EACH ROW
  EXECUTE PROCEDURE transition_table_base_ins_func();

上面新的触发器就可以使用 REFERENCING OLD TABLE AS oldtable NEW TABLE AS newtable.

Debug

可以将断点设置在 make_namedtuplestorescan 函数中判断是否会生成 NamedTuplestoreScan.

标签:what,transition,newtable,ins,NamedTupleStore,base,TABLE,table
From: https://www.cnblogs.com/lddcool/p/18289348

相关文章

  • What Makes Quantization for Large Language Models Hard?
    本文是LLM系列文章,针对《WhatMakesQuantizationforLargeLanguageModelsHard?AnEmpiricalStudyfromtheLensofPerturbation》的翻译。是什么让大型语言模型的量化变得困难?微扰透镜的经验研究摘要1引言2相关工作3前言4从微扰的角度看LLM量子化5......
  • Android相关概念 what
    AndroidABI不同的Android设备使用不同的CPU,而不同的CPU支持不同的指令集。CPU与指令集的每种组合都有专属的应用二进制接口(ABI)。ABI包含以下信息:可使用的CPU指令集(和扩展指令集)。运行时内存存储和加载的字节顺序。Android始终是little-endian。在应用和系统之......
  • In what kind of situations that no pull would be configured as a input gpio
    InthecontextofGPIOconfiguration,thechoicebetweenusingapull-up,pull-down,ornopullresistordependsonthespecificrequirementsoftheapplicationandtheexternalcircuitryconnectedtotheGPIOpin.NoPullConfigurationWhenGPIO_InitStru......
  • What is the difference between OpenAI and ChatOpenAI in LangChain?
    题意:在LangChain中,OpenAI 和 ChatOpenAI 的主要区别是什么?问题背景:IreadtheLangChainQuickstart.Thereisademoinside:        里面有一个演示:fromlangchain.llmsimportOpenAIfromlangchain.chat_modelsimportChatOpenAIllm=OpenAI()chat......
  • What-is-base64-code
    Base64编码和解码Base64是一种基于64个可打印字符来表示二进制数据的编码方式。它通常用于在文本数据中传输二进制数据,例如电子邮件和URL。Base64编码过程数据分割:将输入的二进制数据按每24位(3字节)一组分割。如果最后一组不足24位,用0进行填充。每6位一组:将每24位的数据再分......
  • WHAT - 常见的前端工具库
    前端开发有许多工具库,可以帮助开发者提高效率、简化代码和增强功能。以下是一些常见的前端工具库:一、常见工具库函数库1.Lodash(推荐)Lodash是一个JavaScript实用程序库,提供了一系列方便的函数,用于数组、对象和其他数据类型的操作。网址:Lodash2.Underscore.js类似......
  • 翻译《The Old New Thing》- What a drag: Dragging a Uniform Resource Locator (URL
    Whatadrag:DraggingaUniformResourceLocator(URL)andtext-TheOldNewThinghttps://devblogs.microsoft.com/oldnewthing/20080313-00/?p=23123RaymondChen 2008年03月13日 麻烦的拖拽:拖拽统一资源定位符(URL)和文本简要        这篇文章主要讲......
  • 翻译《The Old New Thing》- What a drag: Dragging a Uniform Resource Locator (URL
    Whatadrag:DraggingaUniformResourceLocator(URL)-TheOldNewThing(microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080312-00/?p=23133RaymondChen 2008年03月12日麻烦的拖拽:拖拽统一资源定位符(URL)简要本文介绍了如何在Windows程序中实......
  • Unlearn What You Want to Forget Efficient Unlearning for LLMs
    目录概符号说明UnlearningLayersFusingUnlearningLayers代码ChenJ.andYangD.Unlearnwhatyouwanttoforget:efficientunlearningforllms.2024.概本文提出一种Unlearninglayer去帮助LLMs'遗忘'一些数据.符号说明\(F(\cdot)\),largelanguagemodel......
  • What a floor washer?
    Whatafloorwasher?Theterm“Scrubber”isusedtodescribewhatwecallanautomaticscrubber.Essentially,itsamopandbucketsubstituteforapowerful,efficientcleaner.Thescrubberperformsthreemaintaskssimultaneously:1.Itprovidesacleani......