网站添加cms东莞常平火车站叫什么

bicheng/2026/1/26 5:38:04/文章来源:
网站添加cms,东莞常平火车站叫什么,软文广告经典案例100字,wordpress登陆代码PL/pgSQL是Vastbase提供的一种过程语言#xff0c;在普通SQL语句的使用上增加了编程语言的特点#xff0c;可以用于创建函数、存储过程、触发器过程以及创建匿名块等。 本文介绍Vastbase中PL/pgSQL的执行流程#xff0c;包括PL/pgSQL的编译与运行。 1、编译 PL/pgSQL的编译…PL/pgSQL是Vastbase提供的一种过程语言在普通SQL语句的使用上增加了编程语言的特点可以用于创建函数、存储过程、触发器过程以及创建匿名块等。 本文介绍Vastbase中PL/pgSQL的执行流程包括PL/pgSQL的编译与运行。 1、编译 PL/pgSQL的编译部分核心是解释出可以被内核识别的变量、命名空间和语句节点链表。 1.1 编译上下文 typedef struct PLpgSQL_compile_context {struct PLpgSQL_datum** plpgsql_Datums;struct PLpgSQL_function* plpgsql_curr_compile;struct PLpgSQL_nsitem* ns_top;PLpgSQL_compile_context结构用来保存编译期间的上下文信息其核心成员是plpgsql_Datums、ns_top和plpgsql_curr_compile。 plpgsql_Datums保存识别出的变量是一个数组ns_top保存识别出的命名空间是一个链表plpgsql_curr_compile保存识别出的语句节点链表 1.2 变量数组 typedef struct PLpgSQL_datum { /* Generic datum array item */int dtype; /* 变量类型 */int dno; /* 变量在变量数组的下标即变量是变量数组的第几个元素 */ } PLpgSQL_datum; PL/pgSQL支持多种类型的变量包括普通的变量、表达式、复合类型和数组类型等。不同的变量类型用相应的结构表示例如普通变量使用PLpgSQL_var表示表达式使用PLpgSQL_expr表示等。 Vastbase使用面向对象的思想设计PL/pgSQL的变量PLpgSQL_datum结构表示变量的抽象父类共有4个结构体成员PLpgSQL_var和PLpgSQL_expr等表示子类子类结构的前4个成员与PLpgSQL_datum结构保持一致。 PL/pgSQL变量的来源主要有 函数的入参声明部分声明的变量内置变量例如found变量和游标变量等 1.3 命名空间链表 typedef struct PLpgSQL_nsitem { /* Item in the compilers namespace tree */int itemtype; /* 命名空间类型 */int itemno; /* 命名空间关联的变量在变量数组的下标 */struct PLpgSQL_nsitem* prev; /* 指向上一个命名空间 */char name[FLEXIBLE_ARRAY_MEMBER]; /* 命名空间字符串 */ } PLpgSQL_nsitem;PL/pgSQL里命名空间(namespace)表示变量或标签的名称。主要有以下类型的命名空间 PL/pgSQL在运行语句时通过标识符查找命名空间链表若查找到命名空间则根据命名空间的itemno在变量数组里获取变量进行相应的操作。 1.4 语法解析 Vastbase的PL/pgSQL有独立的词法分析和语法分析器。PL/pgSQL主要有两种大类的块声明块和语句块。 声明块 声明块是以DECLARE关键字作为开始标记以BEGIN关键字作为结束标记的语句块。 在声明块内可以声明变量和定义类型。新定义的类型会被记录到系统表元信息中。声明的变量会被记录到变量数组和命名空间链表里对于复合类型的变量PL/pgSQL会对其进行展开即会创建${变量名}.${属性}这样的变量和命名空间。 语句块 语句块是指以BEGIN关键字作为开始标记以END关键字作为结束标记的语句块。 语句块内可以嵌套新的声明块和语句块。内层语句块可以访问外层声明块的类型和变量反之不允许。 语句块以分号作为语句分隔符每个语句都会被解析为不同类型的语句节点。 typedef struct { /* One EXCEPTION ... WHEN clause */PLpgSQL_condition* conditions;List* action; /* List of statements */ } PLpgSQL_exception;typedef struct PLpgSQL_stmt_block {List* body; /* List of statements */PLpgSQL_exception_block* exceptions; } PLpgSQL_stmt_block; PL/pgSQL使用PLpgSQL_stmt_block结构表示经过语法解析后的PL/pgSQL语句块PLpgSQL_stmt_block结构有两个核心的成员分别是body和exceptions。 body是语句块内正常运行的语句节点链表。 exceptions是PLpgSQL_exception类型变量链表。 当语句节点链表内的语句发生异常时进入exceptions成员表示的异常处理流程。PLpgSQL_exception结构里conditions成员表示该异常处理块的异常类型action成员就是该类型异常的处理语句节点链表当运行时发生了匹配conditions的异常则执行该异常的action进行异常处理。 PL/pgSQL支持的语句类型比较丰富以下是一些常用的语句类型归类 嵌套语句块PLPGSQL_STMT_BLOCK赋值语句PLPGSQL_STMT_ASSIGN条件分支PLPGSQL_STMT_IF/PLPGSQL_STMT_GOTO/PLPGSQL_STMT_CASE循环控制PLPGSQL_STMT_LOOP/PLPGSQL_STMT_WHILE/PLPGSQL_STMT_FORI/PLPGSQL_STMT_FORS/PLPGSQL_STMT_FORC/PLPGSQL_STMT_FOREACH_A/PLPGSQL_STMT_EXIT返回语句PLPGSQL_STMT_RETURN/PLPGSQL_STMT_RETURN_NEXT/PLPGSQL_STMT_RETURN_QUERY打印输出PLPGSQL_STMT_RAISE执行语句PLPGSQL_STMT_EXECSQL/PLPGSQL_STMT_DYNEXECUTE/PLPGSQL_STMT_DYNFORS/PLPGSQL_STMT_PERFORM游标相关PLPGSQL_STMT_OPEN/PLPGSQL_STMT_FETCH/PLPGSQL_STMT_CLOSE事务控制PLPGSQL_STMT_COMMIT/PLPGSQL_STMT_ROLLBACK/PLPGSQL_STMT_SAVEPOINT其他PLPGSQL_STMT_GETDIAG/PLPGSQL_STMT_NULL/PLPGSQL_STMT_SIGNAL/PLPGSQL_STMT_RESIGNAL 1.5 编译缓存 PL/pgSQL的编译是一个耗时操作每次运行前都重新编译对性能来说影响非常大。为解决这个问题对于使用PL/pgSQL定义的函数/存储过程Vastbase 把编译结果缓存在会话的内存中。在会话运行期间如果函数/存储过程的定义没有发生变化则只需要编译一次后续函数/存储过程的运行会从缓存获取编译结果。 2、运行 PL/pgSQL运行依赖SPIServer Programming Interface机制把需要运行的SQL语句发送到内核模块中内核模块通过预定义的钩子函数对语句中引用的变量进行解析处理。 2.1 SPI机制 SPI机制提供了一系列接口连接并访问数据库内核 PLPGSQL_STMT_EXECSQL语句节点的工作流程大致如下图 流程说明SPI_connectPL/pgSQL语句块执行前连接到内核服务端整个语句块的执行只需要连接一次SPI_prepare_params发送待执行的sql语句到服务端获取执行计划setup_param_list设置语句的参数SPI_execute_plan_with_paramlist发送参数到服务的执行语句SPI_finish断开与内核服务端的连接释放资源 2.2 执行语句块 PL/pgSQL经过编译后编译上下文保存了变量数组、命名空间链表和语句节点链表。如下图执行语句实际上就是遍历语句节点链表根据不同的语句节点类型调用不同的处理函数。 2.3 异常处理 如下图所示异常处理块实际上是通过PG_TRY/PG_CATCH/PG_END_TRY实现。 当调用exec_stmt_block执行的语句块时如果PLpgSQL_stmt_block的exceptions成员不为空即定义了异常处理块则使用PG_TRY/PG_CATCH/PG_END_TRY异常处理工具进行exec_stmtsblock→body的调动捕获异常后调用exec_stmts(exception→action)进行异常处理。 2.4 参数处理 PL/pgSQL内允许语句内引用声明块内声明的变量或函数入参代码如下 CREATE TABLE t_test(id INT); DECLARE id INT; BEGINid : 1;INSERT INTO t_test values (id); END; / 第6行的INSERT语句会被语法解析器解析成PLPGSQL_STMT_EXECSQL语句节点PL/pgSQL会把整个语句原封不动发送到内核服务端中并生成计划那么内核的语义分析模块就需要识别出括号内的id标识符是一个参数。 Vastbase通过钩子函数实现参数识别和值替换代码如下 struct ParseState {PreParseColumnRefHook p_pre_columnref_hook;PostParseColumnRefHook p_post_columnref_hook;ParseParamRefHook p_paramref_hook; } typedef struct ParamListInfoData {ParamFetchHook paramFetch; /* parameter fetch hook */ } ParamListInfoData; 通过设置ParseState结构p_post_columnref_hook钩子内核在进行对写入字段进行语义分析时会调用钩子函数该钩子函数对命名空间链表进行查找如果查找到则构造Param节点记录变量在PL/pgSQL变量里数组中的位置和类型并挂载Query树上。 通过设置ParamListInfoData结构paramFetch钩子内核在生成执行计划的预处理表达式阶段调用该钩子根据Param结构信息拿到该参数的在变量值并把该Param结构替换为Const结构。 通过两个钩子函数使得PL/pgSQL执行sql语句时可以引用声明块内声明的变量或函数入参。 3、总结 通过上述介绍可以看出Vastbase的PL/pgSQL模块与常规的编程语言类似均支持赋值、条件分支、循环等多种语句类型通过PL/pgSQL模块可以在Vastbase服务端编写较为复杂的逻辑。其生命周期分为编译和运行两个阶段使用PL/pgSQL编写函数/存储过程时还通过缓存编译结果使得函数调用变得更加高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家装类设计网站长沙市网站推广电话

如果全球影像每5天一更新,并集多种地图数据源于一体的PB级海量地图数据该怎样去管理呢? 这是当我了解到SOAR网站之后,思考过的一个问题。 全球最大的在线地图网站 在SOAR的官方网站,据称它是世界上最大的在线地图网站。 它是集…

南昌正规网站公司吗宁波建设监理管理协会网站

去年这个时候简单的摸索了一下三维的GIS相关的东西,也就是仅仅玩耍了一把,这次来点真正用的上的干货效果效果: 1、加载自定义百度样式的瓦片效果 2、加载自定义百度样式的缩放效果 3、快速手动进去咱的大帝都 4、加载海量Mark效果 5、加载海量Mark和简单模型效果 6、…

大家都用哪个网站做读书笔记临沂企业建站系统模板

项目编号: S 060 ,文末获取源码。 \color{red}{项目编号:S060,文末获取源码。} 项目编号:S060,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固…

最好的营销网站网页构建语言

1. 背景 网上搜了很多文章,总算有点头绪了。其实隐私清单最后做出来就是一个plist文件。找了几个常用三方已经配好的看了看,比着做就好了。 WWDC23 中关于隐私部分的更新(WWDC23 隐私更新官网),其中提到了第三方 SDK 的…

仿牌网站优化企业网站策划方案书

一、NetCDF介绍 NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。NetCDF广泛应…

丹徒网站建设怎么样本地的赣州网站建设

SSL 证书(也称为公钥证书)是安装在 Web 服务器上的加密文件,可帮助建立安全、加密的在线通信,SSL 证书有两个主要用途: 提供加密:当访问者的浏览器通过SSL连接到您的网站时,信息交换是加密的&a…

网站开发与维修是什么意思用流媒体做的电台网站

SVG实现波浪效果 svg path:C 贝塞尔曲线绘制波浪形状 A 绘制圆弧形 svg animate:制作波浪动画,为了波浪动画效果自然,设置values关键点       attributeName:变化属性名 dur:动画时间 repeatCount&a…

网站建设在淘宝上以后让还让发布吗建筑工程类人才招聘

使用akshare可以很方便的获取同花顺行业列表,与每个行业对应的个股信息,流程如下: 使用ak.stock_board_industry_summary_ths()获取行业列表循环行业列表,使用ak.stock_board_industry_cons_ths()获取行业对应的个股信息 官方文…

给客户做网站建设方案企业邮箱怎么获取

目录 一、Chunk基本概念 1. Chunk的概念: 2. 配置Chunk: 3. Chunk的示例配置: 4. Chunk的执行流程:

什么网站做装修的推广引流的10大渠道

dataset库是Python中一个用于操作数据库的简单库,它提供了一种简洁的方式与各种关系型数据库进行交互,例如SQLite、MySQL、PostgreSQL 等。你可以使用dataset库来执行查询、插入、更新和删除操作,而无需编写复杂的SQL语句。dataset库适用于小…

济南网站制作平台电商主图模板

前言: 下面分享一些关于阿里,美团,深信服等公司的面经,供大家参考一下。大家也可以去收集一些其他的面试题,可以通过面试题来看看自己有哪里不足。也可以了解自己想去的公司会问什么问题,进行有针对的复习。…

网站开发费用包括美工费吗巴彦淖尔 网站建设

Every day a Leetcode 题目来源:2786. 访问数组中的位置使分数最大 解法1:动态规划 状态数组: dp[i][0]: 访问下标范围 [0, i] 中的元素且最后访问的元素是偶数时的最大得分;dp[i][1]: 访问下标范围 [0, i] 中的元素且最后访问…

婚纱网站html模板微信怎么开通公众号

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................................................................... N 10; %嵌入一…

网站效果图怎么做的如何制作自己的网站链接教程

安装交叉编译环境 需要一个 Ubunut18.04 的64位的主机 或者直接在树莓派系统上进行编译; apt-get update apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip获取树莓派内核源码 # 下载成功后,在当前目录下有一个 linux 的文件夹 g…

安阳网站建设策划网站标题间隔符

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Flask vs. Django:选择适合你的Web开发框架 在选择一个适合你项目的Web开发框架…

手上有一个好网站怎么做赚钱西安微信网站开发

UniApp 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一次代码,可发布到iOS、Android、H5以及各种小程序。如果你想在 UniApp 中操作云数据库,你可能需要使用云开发的功能。 以下是在 UniApp 中操作云数据库的一般步骤: …

wamp在网站建设中的功能及协作关系站长工具排名查询

为什么产生? 经过大量增删改的表,都可能存在碎片 MySQL数据结构是B树, 删除某一记录,只会标记为删除,后续插入一条该区间的记录,就会复用这个位置。 删除整个数据页的记录,则整个页标记为“可…

石家庄 网站建设wordpress群聊插件

目录 1 什么是线程? 2 线程的优点 3 线程的缺点 4 线程异常 5 线程用途 6 Linux线程和进程对比 1 什么是线程? 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列…

做网站和SSH大连网站制作报价

效果演示 实现了一个简单的登录表单的样式,包括背景颜色、边框、字体颜色、字体大小、字体粗细、输入框样式、提交按钮样式等。当用户在输入框中输入内容时,输入框下方的提示文字会动态地变化,以提示用户输入正确的信息。当用户点击提交按钮时…

高考志愿网站开发wordpress 自动同步工具

Unity3D实现谷歌地球 在Unity3d平台实现的类似谷歌地球的功能,可动态加载谷歌,ArcGis,BingMap,天地图影像,也可加载国界线等矢量文件以及在线加载高程文件。 视频链接: 地球操作:https://www.bilibili.com/video/BV1mT4y1P771 地球漫游:h…