当前位置: 首页 > 微软应用 > 办公软件 > 正文
开源数据库工具 PostgreSQL 15.3 中文多语免费版

开源数据库工具 PostgreSQL 15.3 中文多语免费版

作者:大眼仔~旭 日期:2周前 (05-11) 评论:0 条

摘要:PostgreSQL 是世界上最先进的开源数据库,也是第四大最受欢迎的数据库。在20多年的开发中,PostgreSQL 由一个组织良好,高度原则性和经验丰富的开源社区管理。它是一个面向对象的数据库,完全符合 ACID 标准且具有高度可扩展性,使社区能够随着工作负载需求的发展添加新的特性和功能。 由于其可扩展性,Post…

PostgreSQL 是世界上最先进的开源数据库,也是第四大最受欢迎的数据库。在20多年的开发中,PostgreSQL 由一个组织良好,高度原则性和经验丰富的开源社区管理。它是一个面向对象的数据库,完全符合 ACID 标准且具有高度可扩展性,使社区能够随着工作负载需求的发展添加新的特性和功能。

由于其可扩展性,PostgreSQL 提供了多种内置的 PostgreSQL 数据类型,包括 JSON,XML,HSTORE(键值),Geo-spatial(PostGIS),IPv6,灵活的索引,具有复合索引,GiST,SP-GiST,GIN;全文搜索,在线索引重组;后台工作线程,例如称为 Mongress 的托管进程,它接受 MongoDB 查询以与 Postgres 数据接口;一个 contrib 模块接口:pgcrypto(数据加密),pg_trgm(查找“类似”数据),HSTORE(无模式数据);和广泛的 SQL 支持。

PostgreSQL 可以在所有主要的操作系统上运行,包括 Linux,UNIX(AIX,BSD,HP-UX,macOS,Solaris)和 Windows。它提供以下编程语言:PL / pgSQL,PL / SQL,Java,Python,Ruby,C / C +,PHP,Perl,Tcl,Scheme。Postgres 还提供以下库接口:OCI、libpq、JDBC、ODBC、.NET、Perl、Python、Ruby、C/C+、PHP、Lisp、Scheme 和 Qt。

PostgreSQL 数据库提供企业级数据库解决方案,并被许多行业的各种企业使用,包括金融服务,信息技术,政府以及媒体和通信。

PostgreSQL 中文版

PostgreSQL 中文多语免费版

什么是 PostgreSQL?

PostgreSQL 是一个功能强大的开源对象关系数据库系统,它使用并扩展了 SQL 语言,并结合了许多可安全存储和扩展最复杂数据工作负载的特性。 PostgreSQL 的起源可以追溯到 1986 年,作为加州大学伯克利分校 POSTGRES 项目的一部分,并在核心平台上进行了 30 多年的积极开发。

PostgreSQL 因其久经考验的架构、可靠性、数据完整性、强大的功能集、可扩展性以及软件背后的开源社区致力于始终如一地提供高性能和创新解决方案而赢得了良好的声誉。 PostgreSQL 可在所有主要操作系统上运行,自 2001 年以来一直符合 ACID,并具有强大的附加组件,例如流行的 PostGIS 地理空间数据库扩展器。毫不奇怪,PostgreSQL 已成为许多人和组织选择的开源关系数据库。

开始使用 PostgreSQL 从未如此简单 – 选择一个您想要构建的项目,让 PostgreSQL 安全可靠地存储您的数据。

为什么使用 PostgreSQL?

PostgreSQL 具有许多功能,旨在帮助开发人员构建应用程序,帮助管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集有多大或多小。除了免费和开源之外,PostgreSQL 还具有高度可扩展性。例如,您可以定义自己的数据类型、构建自定义函数,甚至使用不同的编程语言编写代码,而无需重新编译数据库!

PostgreSQL 试图符合 SQL 标准,这样的一致性不会与传统特性相矛盾或可能导致糟糕的架构决策。支持 SQL 标准所需的许多功能,但有时语法或功能略有不同。随着时间的推移,可以预期进一步朝着一致性迈进。从 2021 年 9 月发布的第 14 版开始,PostgreSQL 至少符合 SQL:2016 Core 一致性的 179 个强制性特性中的 170 个。在撰写本文时,没有任何关系数据库完全符合该标准。

以下是 PostgreSQL 中各种功能的详尽列表,每个主要版本中都会添加更多功能:

  • 数据类型

基元:整数、数字、字符串、布尔值
结构化:日期/时间、数组、范围/多范围、UUID
文档:JSON/JSONB、XML、键值(Hstore)
几何:点、线、圆、多边形
自定义:复合,自定义类型

  • 数据完整性

唯一,不为空
主密钥
外密钥
排除约束
显式锁,建议锁

  • 并发性,性能

索引:B-tree、多列、表达式、部分
高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器
复杂的查询计划器/优化器、仅索引扫描、多列统计信息
事务、嵌套事务(通过保存点)
多版本并发控制 (MVCC)
读取查询的并行化和构建 B-tree 索引
表分区
SQL 标准中定义的所有事务隔离级别,包括 Serializable
表达式的即时 (JIT) 编译

  • 可靠性,灾难恢复

预写式日志记录 (WAL)
复制:异步、同步、逻辑
时间点恢复 (PITR),活动备用
表空间

  • 安全

身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
强大的门禁系统
列和行级别的安全性
使用证书和其他方法的多因素身份验证

  • 可扩展性

存储函数和过程
过程语言:PL/PGSQL、Perl、Python(等等)
SQL/JSON 路径表达式
外部数据包装器:使用标准 SQL 接口连接到其他数据库或流
可定制的表格存储界面
许多提供附加功能的扩展,包括 PostGIS

  • 国际化,文本搜索

支持国际字符集,例如 通过 ICU 整理
不区分大小写和不区分重音的排序规则
全文搜索

您可以在 PostgreSQL 文档中发现更多功能。 此外,PostgreSQL 具有高度可扩展性:许多功能(例如索引)都定义了 API,以便您可以使用 PostgreSQL 进行构建以解决您的挑战。

PostgreSQL 已被证明具有高度可扩展性,无论是在它可以管理的庞大数据量还是在它可以容纳的并发用户数量上。 生产环境中有活跃的 PostgreSQL 集群来管理数 TB 的数据,以及专门的系统来管理数 PB 的数据。

此外,该应用程序还具有直观的功能,即 Vacuum、Analyze 和 Reindex,可帮助您在几秒钟内维护数据库对象。第一个函数扫描数据库或表中不再使用的行。如果一行被更新或删除,之前的内容不会被替换,而是被标记为无效。第二个功能名为分析,调查每个选定的数据库或表包含的所有可用值。重新索引功能可帮助您快速重建索引,以防它们被不寻常的插入数据模式修改。

总的来说,PostgreSQL 被证明是一个稳定的解决方案,可以帮助 DBA 快速管理多个数据库,并且由于它支持包括 Perl、Java、Ruby、C/C++ 和 Python 在内的各种编程语言,它能够运行不同的存储过程和 SQL脚本。

PostgreSQL 许可证

PostgreSQL 是在 PostgreSQL 许可证下发布的,这是一个自由的开源许可证,类似于 BSD 或 MIT 许可证。

官方主页

What’s new in PostgreSQL 15.3
May 11, 2023
Changes:
Prevent CREATE SCHEMA from defeating changes in search_path (Alexander Lakhin)
Within a CREATE SCHEMA command, objects in the prevailing search_path, as well as those in the newly-created schema, would be visible even within a called function or script that attempted to set a secure search_path. This could allow any user having permission to create a schema to hijack the privileges of a security definer function or extension script.
The PostgreSQL Project thanks Alexander Lakhin for reporting this problem. (CVE-2023-2454)
Enforce row-level security policies correctly after inlining a set-returning function (Stephen Frost, Tom Lane)
If a set-returning SQL-language function refers to a table having row-level security policies, and it can be inlined into a calling query, those RLS policies would not get enforced properly in some cases involving re-using a cached plan under a different role. This could allow a user to see or modify rows that should have been invisible.
The PostgreSQL Project thanks Wolfgang Walther for reporting this problem. (CVE-2023-2455)
Fix potential corruption of the template (source) database after CREATE DATABASE with the STRATEGY WAL_LOG option (Nathan Bossart, Ryo Matsumura)
Improper buffer handling created a risk that any later modification of the template’s pg_class catalog would be lost.
Ix memory leakage and unnecessary disk reads during CREATE DATABASE with the STRATEGY WAL_LOG option (Andres Freund)
Avoid crash when the new schema name is omitted in CREATE SCHEMA (Michael Paquier)
The SQL standard allows writing CREATE SCHEMA AUTHORIZATION owner_name, with the schema name defaulting to owner_name. However some code paths expected the schema name to be present and would fail.
Fix various planner failures with MERGE commands (Tom Lane)
Planning could fail with errors like “variable not found in subplan target list” or “PlaceHolderVar found where not expected”.
Fix the row count reported by MERGE for some corner cases (Dean Rasheed)
The row count reported in the command tag counted rows that actually hadn’t been modified due to a BEFORE ROW trigger returning NULL. This is inconsistent with what happens in plain UPDATE or DELETE, so change it to not count such rows. Also, avoid counting a row twice when MERGE moves it into a different partition of a partitioned table.
Fix MERGE problems with concurrent updates (Dean Rasheed, Álvaro Herrera)
Some cases misbehaved if a row to be updated or deleted by MERGE had just been updated by a concurrent transaction. This could lead to a crash, or the wrong merge action being executed, or no action at all.
Add support for decompiling MERGE commands (Álvaro Herrera)
This was overlooked when MERGE was added, but it’s essential support for MERGE in new-style SQL functions.
Fix enabling/disabling of foreign-key triggers in partitioned tables (Tom Lane)
ALTER TABLE … ENABLE/DISABLE TRIGGER failed if applied to a partitioned table’s foreign-key enforcement triggers, because it tried to locate the clone triggers for the partitions by name, and they do not have the same name. Locate them by parent-trigger OID instead.
Disallow altering composite types that are stored in indexes (Tom Lane)
ALTER TYPE disallows non-binary-compatible modifications of composite types if they are stored in any table columns. (Perhaps that will be allowed someday, but it hasn’t happened yet; the locking implications of rewriting many tables are daunting.) We overlooked the possibility that an index might contain a composite type that doesn’t also appear in its table.
Disallow system columns as elements of foreign keys (Tom Lane)
Since the removal of OID as a system column, there is no plausible use-case for this, and various bits of code no longer support it. Disallow it rather than trying to fix all the cases.
Ensure that COPY TO from an RLS-enabled parent table does not copy any rows from child tables (Antonin Houska)
The documentation is quite clear that COPY TO copies rows from only the named table, not any inheritance children it may have. However, if row-level security was enabled on the table then this stopped being true.
Avoid possible crash when array_position() or array_positions() is passed an empty array (Tom Lane)
Fix possible out-of-bounds fetch in to_char() (Tom Lane)
With bad luck this could have resulted in a server crash.
Avoid buffer overread in translate() function (Daniil Anisimov)
When using the deletion feature, the function might fetch the byte just after the input string, creating a small risk of crash.
Adjust text-search-related character classification logic to correctly detect whether the prevailing locale is C (Jeff Davis)
This code got confused if the database’s default collation uses ICU.
Avoid possible crash on empty input for type interval (Tom Lane)
Re-allow exponential notation in ISO-8601 interval fields (Tom Lane)
Interval input like P0.1e10D isn’t officially sanctioned by ISO-8601, but we accepted it for a long time before version 15, so re-allow it.
Fix error cursor setting for parse errors in JSON string literals (Tom Lane)
Most cases in which a syntax error is detected in a string literal within a JSON value failed to set the error cursor appropriately. This led at least to an unhelpful error message (pointing to the token before the string, rather than the actual trouble spot), and could even result in a crash in v14 and later.
Fix data corruption due to vacuum_defer_cleanup_age being larger than the current 64-bit xid (Andres Freund)
In v14 and later with non-default settings of vacuum_defer_cleanup_age, it was possible to compute a very large vacuum cleanup horizon xid, leading to vacuum removing rows that are still live. v12 and v13 have a lesser form of the same problem affecting only GiST indexes, which could lead to index pages getting recycled too early.
Fix parser’s failure to detect some cases of improperly-nested aggregates (Tom Lane)
This oversight could lead to executor failures for queries that should have been rejected as invalid.
Fix data structure corruption during parsing of serial SEQUENCE NAME options (David Rowley)
This can lead to trouble if an event trigger captures the corrupted parse tree.
Correctly update plan nodes’ parallel-safety markings when moving initplans from one node to another (Tom Lane)
This planner oversight could lead to “subplan was not initialized” errors at runtime.
Avoid failure with PlaceHolderVars in extended-statistics code (Tom Lane)
Use of dependency-type extended statistics could fail with “PlaceHolderVar found where not expected”.
Fix incorrect tests for whether a qual clause applied to a subquery can be transformed into a window aggregate “run condition” within the subquery (David Rowley)
A SubPlan within such a clause would cause assertion failures or incorrect answers, as would some other unusual cases.
Disable the inverse-transition optimization for window aggregates when the call contains sub-SELECTs (David Rowley)
This optimization requires that the aggregate’s argument expressions have repeatable results, which might not hold for a sub-SELECT.
Fix oversights in execution of nested ARRAY[] constructs (Alexander Lakhin, Tom Lane)
Correctly detect overflow of the total space needed for the result array, avoiding a possible crash due to undersized output allocation. Also ensure that any trailing padding space in the result array is zeroed; while leaving garbage there is harmless for most purposes, it can result in odd behavior later.
Prevent crash when updating a field within an array-of-domain-over-composite-type column (Dmitry Dolgov)
Fix partition pruning logic for partitioning on boolean columns (David Rowley)
Pruning with a condition like boolcol IS NOT TRUE was done incorrectly, leading to possibly not returning rows in which boolcol is NULL. Also, the rather unlikely case of partitioning on NOT boolcol was handled incorrectly.
Fix race condition in per-batch cleanup during parallel hash join (Thomas Munro, Melanie Plageman)
A crash was possible given unlucky timing and parallel_leader_participation = off (which is not the default).
Recalculate GENERATED columns after an EvalPlanQual check (Tom Lane)
In READ COMMITTED isolation mode, the effects of a row update might need to get reapplied to a newer version of the row than the query found originally. If so, we need to recompute any GENERATED columns, in case they depend on columns that were changed by the concurrent update.
Fix memory leak in Memoize plan execution (David Rowley)
Fix buffer refcount leak when using batched inserts for a foreign table included in a partitioned tree (Alexander Pyhalov)
Restore support for sub-millisecond vacuum_cost_delay settings (Thomas Munro)
Don’t balance vacuum cost delay when a table has a per-relation vacuum_cost_delay setting of zero (Masahiko Sawada)
Delay balancing is supposed to be disabled whenever autovacuum is processing a table with a per-relation vacuum_cost_delay setting, but this was done only for positive settings, not zero.
Fix corner-case crashes when columns have been added to the end of a view (Tom Lane)
Repair rare failure of MULTIEXPR_SUBLINK subplans in partitioned updates (Andres Freund, Tom Lane)
Use of the syntax INSERT … ON CONFLICT DO UPDATE SET (c1, …) = (SELECT …) with a partitioned target table could result in failure if any child table is dissimilar from the parent (for example, different physical column order). This typically manifested as failure of consistency checks in the executor; but a crash or incorrect data updates are also possible.
Fix handling of DEFAULT markers within a multi-row INSERT … VALUES query on a view that has a DO ALSO INSERT … SELECT rule (Dean Rasheed)
Such cases typically failed with “unrecognized node type” errors or assertion failures.
Support references to OLD and NEW within subqueries in rule actions (Dean Rasheed, Tom Lane)
Such references are really lateral references, but the server could crash if the subquery wasn’t explicitly marked with LATERAL. Arrange to do that implicitly when necessary.
When decompiling a rule or SQL function body containing INSERT/UPDATE/DELETE within WITH, take care to print the correct alias for the target table (Tom Lane)
Fix glitches in SERIALIZABLE READ ONLY optimization (Thomas Munro)
Transactions already marked as “doomed” confused the safe-snapshot optimization for SERIALIZABLE READ ONLY transactions. The optimization was unnecessarily skipped in some cases. In other cases an assertion failure occurred (but there was no problem in non-assert builds).
Avoid leaking cache callback slots in the pgoutput logical decoding plugin (Shi Yu)
Multiple cycles of starting up and shutting down the plugin within a single session would eventually lead to an “out of relcache_callback_list slots” error.
Avoid unnecessary calls to custom validators for index operator class options (Alexander Korotkov)
This change fixes some cases where an unexpected error was thrown.
Avoid useless work while scanning a multi-column BRIN index with multiple scan keys (Tomas Vondra)
The existing code effectively considered only the last scan key while deciding whether a range matched, thus usually scanning more of the index than it needed to.
Fix netmask handling in BRIN inet_minmax_multi_ops opclass (Tomas Vondra)
This error triggered an assertion failure in assert-enabled builds, but is mostly harmless in production builds.
Fix dereference of dangling pointer during buffering build of a GiST index (Alexander Lakhin)
This error seems to usually be harmless in production builds, as the fetched value is noncritical; but in principle it could cause a server crash.
Ignore dropped columns and generated columns during logical replication of an update or delete action (Onder Kalaci, Shi Yu)
Replication with the REPLICA IDENTITY FULL option failed if the table contained such columns.
Correct the name of the wait event for SLRU buffer I/O for commit timestamps (Alexander Lakhin)
This wait event is named CommitTsBuffer according to the documentation, but the code had it as CommitTSBuffer. Change the code to match the documentation, as that way is more consistent with the naming of related wait events.
Re-activate reporting of wait event SLRUFlushSync (Thomas Munro)
Reporting of this type of wait was accidentally removed in code refactoring.
Avoid possible underflow when calculating how many WAL segments to keep (Kyotaro Horiguchi)
This could result in not honoring wal_keep_size accurately.
Disable startup progress reporting overhead in standby mode (Bharath Rupireddy)
In standby mode, we don’t actually report progress of recovery, but we were doing work to track it anyway.
Support RSA-PSS certificates with SCRAM-SHA-256 channel binding (Jacob Champion, Heikki Linnakangas)
This feature requires building with OpenSSL 1.1.1 or newer. Both the server and libpq are affected.
Avoid race condition with process ID tracking on Windows (Thomas Munro)
The operating system could recycle a PID before the postmaster observed that that child process was gone. This could lead to tracking more than one child with the same PID, resulting in confusion.
Fix list_copy_head() to work correctly on an empty List (David Rowley)
This case is not known to be reached by any core PostgreSQL code, but extensions might rely on it working.
Add missing cases to SPI_result_code_string() (Dean Rasheed)
Fix erroneous Valgrind markings in AllocSetRealloc() (Karina Litskevich)
In the unusual case where the size of a large (>8kB) palloc chunk is decreased, a Valgrind-aware build would mismark the defined-ness state of the memory released from the chunk, possibly causing incorrect results during Valgrind testing.
Fix assertion failure for MERGE into a partitioned table with row-level security enabled (Dean Rasheed)
Avoid assertion failure when decoding a transactional logical replication message (Tomas Vondra)
Avoid locale sensitivity when processing regular expression escapes (Jeff Davis)
A backslash followed by a non-ASCII character could sometimes cause an assertion failure, depending on the prevailing locale.
Avoid trying to write an empty WAL record in log_newpage_range() when the last few pages in the specified range are empty (Matthias van de Meent)
It is not entirely clear whether this case is reachable in released branches, but if it is then an assertion failure could occur.
Fix session-lifespan memory leakage in plpgsql DO blocks that use cast expressions (Ajit Awekar, Tom Lane)
Tighten array dimensionality checks when converting Perl list structures to multi-dimensional SQL arrays (Tom Lane)
Plperl could misbehave when the nesting of sub-lists is inconsistent so that the data does not represent a rectangular array of values. Such cases now produce errors, but previously they could result in a crash or garbage output.
Tighten array dimensionality checks when converting Python list structures to multi-dimensional SQL arrays (Tom Lane)
Plpython could misbehave when dealing with empty sub-lists, or when the nesting of sub-lists is inconsistent so that the data does not represent a rectangular array of values. The former should result in an empty output array, and the latter in an error. But some cases resulted in a crash, and others in unexpected output.
Fix unwinding of exception stack in plpython (Xing Guo)
Some rare failure cases could return without cleaning up the PG_TRY exception stack, risking a crash if another error was raised before the next stack level was unwound.
Fix inconsistent GSS-encryption error handling in libpq’s PQconnectPoll() (Michael Paquier)
With gssencmode set to require, the connection was not marked dead after a GSS initialization failure. Make it fail immediately, as the equivalent case for TLS encryption has long done.
Fix possible data corruption in ecpg programs built with the -C ORACLE option (Kyotaro Horiguchi)
When ecpg_get_data() is called with varcharsize set to zero, it could write a terminating zero character into the last byte of the preceding field, truncating the data in that field.
Fix pg_dump so that partitioned tables that are hash-partitioned on an enum-type column can be restored successfully (Tom Lane)
Since the hash codes for enum values depend on the OIDs assigned to the enum, they are typically different after a dump and restore, meaning that rows often need to go into a different partition than they were in originally. Users can work around that by specifying the –load-via-partition-root option; but since there is very little chance of success without that, teach pg_dump to apply it automatically to such tables.
Also, fix pg_restore to not try to TRUNCATE target tables before restoring into them when –load-via-partition-root mode is used. This avoids a hazard of deadlocks and lost data.
Correctly detect non-seekable files on Windows (Juan José Santamaría Flecha, Michael Paquier, Daniel Watzinger)
This bug led to misbehavior when pg_dump writes to a pipe or pg_restore reads from one.
In pgbench’s “prepared” mode, prepare all the commands in a pipeline before starting the pipeline (Álvaro Herrera)
This avoids a failure when a pgbench script tries to start a serializable transaction inside a pipeline.
In contrib/amcheck’s heap checking code, deal correctly with tuples having zero xmin or xmax (Robert Haas)
In contrib/amcheck, deal sanely with xids that appear to be before epoch zero (Andres Freund)
In cases of corruption we might see a wrapped-around 32-bit xid that appears to be before the first xid epoch. Promoting such a value to 64-bit form produced a value far in the future, resulting in wrong reports. Return FirstNormalFullTransactionId in such cases so that things work reasonably sanely.
In contrib/basebackup_to_shell, properly detect failure to open a pipe (Robert Haas)
In contrib/hstore_plpython, avoid crashing if the Python value to be transformed isn’t a mapping (Dmitry Dolgov, Tom Lane)
This should give an error, but Python 3 changed some APIs in a way that caused the check to misbehave, allowing a crash to ensue.
Require the siglen option of a GiST index on an ltree column, if specified, to be a multiple of 4 (Alexander Korotkov)
Other values result in misaligned accesses to index content, which is harmless on Intel-compatible hardware but can cause a crash on some other architectures.
In contrib/pageinspect, add defenses against incorrect input for the gist_page_items() function (Dmitry Koval)
Fix misbehavior in contrib/pg_trgm with an unsatisfiable regular expression (Tom Lane)
A regex such as $foo is legal but unsatisfiable; the regex compiler recognizes that and produces an empty NFA graph. Attempting to optimize such a graph into a pg_trgm GIN or GiST index qualification resulted in accessing off the end of a work array, possibly leading to crashes.
Fix handling of escape sequences in contrib/postgres_fdw’s application_name parameter (Kyotaro Horiguchi, Michael Paquier)
The code to expand these could fail if executed in a background process, as for example during auto-analyze of a foreign table.
In contrib/pg_walinspect, limit memory usage of pg_get_wal_records_info() (Bharath Rupireddy)
Use the –strip-unneeded option when stripping static libraries with GNU-compatible strip (Tom Lane)
Previously, make install-strip used the -x option in this case. This change avoids misbehavior of llvm-strip, and gives slightly smaller output as well.
Stop recommending auto-download of DTD files for building the documentation, and indeed disable it (Aleksander Alekseev, Peter Eisentraut, Tom Lane)
It appears no longer possible to build the SGML documentation without a local installation of the DocBook DTD files. Formerly xsltproc could download those files on-the-fly from sourceforge.net; but sourceforge.net now permits only HTTPS access, and no common version of xsltproc supports that. Hence, remove the bits of our documentation suggesting that that’s possible or useful, and instead add xsltproc’s –nonet option to the build recipes.
When running TAP tests in PGXS builds, use a saner location for the temporary portlock directory (Peter Eisentraut)
Place it under tmp_check in the build directory. With the previous coding, a PGXS build would try to place it in the installation directory, which is not necessarily writable.
Update time zone data files to tzdata release 2023c for DST law changes in Egypt, Greenland, Morocco, and Palestine.
When observing Moscow time, Europe/Kirov and Europe/Volgograd now use the abbreviations MSK/MSD instead of numeric abbreviations, for consistency with other timezones observing Moscow time. Also, America/Yellowknife is no longer distinct from America/Edmonton; this affects some pre-1948 timestamps in that area.

官方下载:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《开源数据库工具 PostgreSQL 15.3 中文多语免费版
文章固定链接:http://www.dayanzai.me/postgresql.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (0条)
^_^ 暂无评论!

发表评论

返回顶部