注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:
文章快速说明索引
学习目标:
做数据库内核开发久了就会有一种 少年得志,年少轻狂 的错觉,然鹅细细一品觉得自己其实不算特别优秀 远远没有达到自己想要的。也许光鲜的表面掩盖了空洞的内在,每每想到于此,皆有夜半临渊如履薄冰之感。为了睡上几个踏实觉,即日起 暂缓其他基于PostgreSQL数据库的兼容功能开发,近段时间 将着重于学习分享Postgres的基础知识和实践内幕。
学习内容:(详见目录)
1、静态语法检查工具PgSanity的使用和实现
学习时间:
2025年02月09日 10:36:35
学习产出:
1、PostgreSQL数据库基础知识回顾 1个
2、CSDN 技术博客 1篇
3、PostgreSQL数据库内核深入学习
注:下面我们所有的学习环境是Centos8+PostgreSQL master+Oracle19C+MySQL8.0
postgres=# select version();
version
---------------------------------------------------------------------------------
PostgreSQL 18devel on x86_64-pc-linux-gnu, compiled by gcc (GCC) 13.1.0, 64-bit
(1 row)
postgres=#
#-----------------------------------------------------------------------------#
SQL> select * from v$version;
BANNER Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
BANNER_FULL Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production Version 19.17.0.0.0
BANNER_LEGACY Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
CON_ID 0
#-----------------------------------------------------------------------------#
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.27 |
+-----------+
1 row in set (0.06 sec)
mysql>
功能使用背景说明
案例展示1,语法校验如下:
SQL Validate Output Results,如下:
[
"There is one or more errors in your SQL syntax",
"",
"Line 1, col 14: An expression was expected. table",
"Line 1, col 14: Unrecognized keyword. table",
"Line 1, col 20: Unexpected token. t1"
]
案例展示2,语法校验如下:
SQL Validate Output Results,如下:
[
"Great!. Valid syntax."
]
案例展示3,语句美化如下:
SQL Validate Output Results,如下:
SELECT
*
FROM
t1;
注:如上网站对于复杂的PostgreSQL的新增语法来说,就显得无能为力了。如下(下面是2025年01月16日的一次提交):