当前位置: 首页 > news >正文

【Rust 日报】2023-05-17 pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架

pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架

pgx是一个用于在 Rust 中开发 PostgreSQL 扩展的框架,并力求尽可能地惯用和安全。pgx 支持 Postgres v10-v14。

主要特征:

  • 带有 cargo-pgx 的完全托管的开发环境;

# 快速创建新的扩展
cargo pgx new# 安装新的(或注册现有的)PostgreSQL 安装
cargo pgx init# 运行您的扩展程序并在(或pgcli)中进行交互式测试
cargo pgx runpsql# 跨多个 PostgreSQL 版本对您的扩展进行单元测试
cargo pgx test# 为您的扩展创建安装包
cargo pgx package
  • 自动架构生成 完全用 Rust 实现扩展;
    将许多 Rust 类型自动映射到 PostgreSQL;
    动生成的 SQL 模式(或通过 手动生成cargo pgx schema);
    包含带有 extension_sql 的自定义 SQL! & extension_sql_file!

  • 安全第一 将 Rust panic!s 转换为 Postgres ERRORs 中止交易,而不是进程;
    内存管理遵循 Rust 的 drop 语义,即使面对 panic! 和 elog(错误);
    #[pg_guard] 程序宏确保以上;
    Postgres 基准是 Option where T: FromDatum;
    NULL 数据安全地表示为 Option::::None。

等等...

那我们怎么使用呢?首先安装cargo-pgrx子命令并初始化开发环境:

cargo install --locked cargo-pgrx
cargo pgrx init

该init命令下载当前支持的 PostgreSQL 版本,将它们编译为~/.pgrx/,然后运行initdb. 也可以使用现有的(用户可写的)PostgreSQL 安装,或安装版本的子集

cargo pgrx new my_extension
cd my_extension

这将为扩展包创建一个新目录。

$ tree 
.
├── Cargo.toml
├── my_extension.control
├── sql
└── src└── lib.rs2 directories, 3 files

新扩展包括一个示例,因此您可以继续并立即运行它。

cargo pgrx run

这会将扩展编译为共享库,将其复制到指定的 Postgres 安装,启动该 Postgres 实例并将您连接到与扩展同名的数据库。一旦 cargo-pgrx 将我们带入 psql,我们就可以加载扩展并对示例函数执行 SELECT。

my_extension=# CREATE EXTENSION my_extension;
CREATE EXTENSIONmy_extension=# SELECT hello_my_extension();hello_my_extension
---------------------Hello, my_extension
(1 row)
  • https://github.com/tcdi/pgrx

在 Rust 中构建一个简单的 grep CLI 应用程序

本文说明了我们如何在 Rust 中构建一个 CLI 应用程序,它是 grep 的一个非常基本的实现。 这个应用程序将有 2 种操作模式:从标准输入管道输入并搜索它们,以及读取文件并搜索它。 该程序的输出将是与搜索词匹配的行,其中包含突出显示的词。 本文涵盖了终端中的 stdin 操作、检测终端何时处于 tty 模式与 pipe 模式、执行简单的文件 I/O、创建非消耗性构建器、管理结果以及构建简单的 CLI 界面等主题。 我们正在构建的应用程序设计非常简单。 它让我们准备好接下来使用像 termion 和 tui 这样的 crates 来构建更复杂的 TUI 应用程序。

  • https://developerlife.com/2022/03/02/rust-grep-cli-app/

  • https://github.com/r3bl-org/r3bl_rs_utils


From 日报小组 侯盛鑫 mock

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

  • 微信公众号:Rust 语言中文社区

相关文章:

【Rust 日报】2023-05-17 pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架

pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架 pgx是一个用于在 Rust 中开发 PostgreSQL 扩展的框架,并力求尽可能地惯用和安全。pgx 支持 Postgres v10-v14。 主要特征: 带有 cargo-pgx 的完全托管的开发环境; # 快速创建新的扩展 cargo pgx new# 安装新的&…...

二十、Zipkin持久化链路跟踪

目录 Zipkin持久化 使用mysql数据库持久化 1、创建zipkin数据库 2、启动zipkin使用以下脚本 3、访问接口(配置了sleuth链路跟踪) 使用ElasticSearch持久化 zipkin启动脚本 Zipkin持久化 Zipkin server默认会将追踪数据信息保存在内存中&#xff0…...

大学毕业设计这样做可以吗

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...

NSUserDefaults

目录 1. 简介2. 基本使用2.1 步骤2.2 对应接口2.2 示例代码 3. 常用接口及属性3.1 存储3.2 获取 4. 注意点4.1 NSUserDefaults 存储的对象全是不可变的4.2 将自定义类型数据读写 NSUserDefaults4.3 非即时写入 5.参考链接 1. 简介 NSUserDefaults是一个单例,在整个程…...

Windows下通过cwRsync备份到服务器服务器之间使用rsync备份传输

Windows下通过cwRsync备份到服务器&服务器之间使用rsync备份传输 Linux服务器配置Rsync服务端1、安装Rsync2、配置rsyncd.conf3、创建目录、密码文件并修改权限4、启动rsync服务 Windows配置cwRsync客户端1、下载并解压cwRsync客户端2、打开cmd,执行同步命令 Wi…...

IS420UCSBH4A 用于高速应用中的Mark VIe系列

控制器IS420UCSBH4A由通用电气公司设计,用于高速应用中的Mark VIe系列,采用1066 MHz EP80579英特尔处理器。该控制器可与Mark VIe系列一起用于EX2100e和LS2100e应用。 IS420UCSBH4A技术规格 系列马克维处理机类型1066兆赫EP80579英特尔型号IS420UCSBH4A…...

将JSON写入文件

首先需要引入fastjson的依赖文件&#xff0c;以下是maven的依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency> 然后是将json字符串写到…...

effective c++ 35 考虑virtual函数以外的其他选择

effective c 35 考虑virtual函数以外的其他选择 在本节中&#xff0c;作者给出了一些可以替代调用virtual函数的方法。下面就一一进行介绍。 分析 1.考虑NVI的实现方式(模板方法设计模式) 父类和子类都调用healthValue同一接口&#xff0c;但是返回值不同。这是一种public非…...

Akura Medica:新型静脉血栓切除系统,完成首次人体试验

Akura Medical公司宣布&#xff0c;其机械血栓切除平台在人体首次使用成功&#xff0c;这是一项具有突破性的技术&#xff0c;可以有效地治疗肺栓塞、深静脉血栓等血栓栓塞疾病。该平台使用了一种与众不同的方法&#xff0c;可以高效地清除血管内的血栓&#xff0c;同时保护血管…...

大型央企集团财务经营分析框架系列(三)

01集团经营管理分析的切入点 集团经营管理分析的切入点往往是从财务分析开始。 往往在一家企业里面&#xff0c;财务方面的信息化建设是要早于其它方面的信息化建设的&#xff0c;业务标准化程度比较高&#xff0c;数据标准化程度也比较高&#xff0c;分析框架也相对成熟。 …...

C++并发编程:std::future、std::async、std::packaged_task与std::promise的深度探索

C并发编程&#xff1a;std::future、std::async、std::packaged_task与std::promise的深度探索 一、引言 (Introduction)1.1 并发编程的概念 (Concept of Concurrent Programming)1.2 C并发编程的重要性 (Importance of Concurrent Programming in C)1.3 关于std::future、std:…...

测牛学堂:2023软件测试学习教程之sql的单表查询排序和模糊查询

单表查询的排序 关键字&#xff1a;order by 排序的类型&#xff0c;升序字段&#xff1a;ASC &#xff0c;省略的话默认就是升序。 降序的字段&#xff1a;DESC 语法&#xff1a; order by 字段名 ASC| DESC返回的表则会按照给定的字段排序 例子&#xff1a;查询学生的考试成…...

CSS第一天总结

css第一天总结 css简介 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称. 有时我们也会称之为 CSS 样式表或级联样式表。 CSS 是也是一种标记语言 CSS 主要用于设置 HTML 页面中的文本内容&#xff08;字体、大小、对齐方式等&#xff09;、图片的外形&#xff08;宽高、…...

js中各种console使用方法大全

console 1.console.log() &#xff08;1&#xff09;用于标准输出流的输出&#xff0c;也就是在控制台中显示一行信息。 &#xff08;2&#xff09;当传递多个参数时&#xff0c;控制台输出时将以空格分隔这些参数。 &#xff08;3&#xff09;也可以用占位符来定义输出的格…...

江西棒球未来发展规划·棒球1号位

关于江西棒球未来发展规划: 一、总体思路 江西棒球运动要立足当前,着眼长远,切实增强鼓励支持体育运动的社会氛围,弘扬体育精神,深化体育改革,加强体育基层建设,努力建设中国棒球之乡。把打造品牌赛事和培养明星运动员作为两手抓的发展方向,不断增强江西棒球运动的整体实力和…...

【笔记】做二休五

在记录去超市购物&#xff0c;菜场买菜&#xff0c;社区团购的花费时&#xff0c;将每个物品的价格记录下来。 大家应该善加利用自己所拥有的事物&#xff0c;若勉强想要利用自己没有的&#xff0c;只会让自己痛苦。 打扫&洗衣服 小苏打是可用于家庭清洁的万能清洁剂&…...

Qt6之字符串类内存分配新变化——16的次方增加

qt提供了比标准c string更强大&#xff0c;更丰富&#xff0c;更实用的字符串类QString&#xff0c;它的主要功能22个已经在之前逐一分析过&#xff0c;感兴趣的可前往以下链接查看&#xff0c;本文主要重点分析下qt在字符串类上面做的优化&#xff0c;主要是两个方面&#xff…...

C++ 名称空间

一、名称空间 1.1、引入名称空间的背景 在C中的名称可以是变量&#xff0c;函数&#xff0c;类以及类的成员。随着项目的增大&#xff0c;名称相互冲突的可能性也在增大。使用多个厂商的类库时&#xff0c;可能导致名称冲突。例如&#xff0c;两个库都定义了名为List&#xff…...

作为一名普通的java程序员,我想和大家分享一下4年来的工作内容

一直有小伙伴想了解更多关于我的工作内容&#xff0c;所以今天我来分享一下我作为一名普通java程序员&#xff0c;4年来工作内容发生了哪些变化&#xff0c;以及我有什么感悟。 我是16届毕业生&#xff0c;我的第一份工作是做外包&#xff0c;第一年的时间里测试偏多&#xff…...

CyberLink的专业视频编辑软件ActionDirector Ultra 3.0版本在win10系统的下载与安装配置教程

目录 前言一、ActionDirector Ultra安装二、使用配置总结 前言 ActionDirector Ultra是CyberLink公司开发的专业视频编辑软件&#xff0c;旨在帮助用户创作高质量的运动和冒险视频。该工具提供了一些先进的特效和编辑工具&#xff0c;让用户能够轻松地剪辑、修剪、调整颜色和添…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...