From d98f626ae7f045a118a168ac34525b4d7ab6a52d Mon Sep 17 00:00:00 2001 From: zzdboy <28206697@qq.com> Date: Sat, 16 Sep 2023 13:49:19 +0000 Subject: [PATCH] fix PostgreSQL version (#2332) Reviewed-on: https://gitea.com/xorm/xorm/pulls/2332 Co-authored-by: zzdboy <28206697@qq.com> Co-committed-by: zzdboy <28206697@qq.com> (cherry picked from commit 2885c88b77c37369c4d8edd66e87b9eed5ae21fd) --- dialects/postgres.go | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/dialects/postgres.go b/dialects/postgres.go index f1f6a2f2..53f66184 100644 --- a/dialects/postgres.go +++ b/dialects/postgres.go @@ -821,6 +821,7 @@ func (db *postgres) Version(ctx context.Context, queryer core.Queryer) (*schemas } // Postgres: 9.5.22 on x86_64-pc-linux-gnu (Debian 9.5.22-1.pgdg90+1), compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit + // Postgres: PostgreSQL 15.3, compiled by Visual C++ build 1914, 64-bit // CockroachDB CCL v19.2.4 (x86_64-unknown-linux-gnu, built if strings.HasPrefix(version, "CockroachDB") { versions := strings.Split(strings.TrimPrefix(version, "CockroachDB CCL "), " ") @@ -829,12 +830,22 @@ func (db *postgres) Version(ctx context.Context, queryer core.Queryer) (*schemas Edition: "CockroachDB", }, nil } else if strings.HasPrefix(version, "PostgreSQL") { - versions := strings.Split(strings.TrimPrefix(version, "PostgreSQL "), " on ") - return &schemas.Version{ - Number: versions[0], - Level: versions[1], - Edition: "PostgreSQL", - }, nil + if strings.Contains(version, " on ") { + versions := strings.Split(strings.TrimPrefix(version, "PostgreSQL "), " on ") + return &schemas.Version{ + Number: versions[0], + Level: versions[1], + Edition: "PostgreSQL", + }, nil + } else { + versions := strings.Split(strings.TrimPrefix(version, "PostgreSQL "), ",") + return &schemas.Version{ + Number: versions[0], + Level: versions[1], + Edition: "PostgreSQL", + }, nil + } + } return nil, errors.New("unknow database version")