Skip to content

Commit a6a9d02

Browse files
authored
Merge pull request #2136 from hnlyf888/master
修改V9支持和读取链接字符串中的SearchPath 来确定架构模式
2 parents cf7d8f7 + 6ea21e3 commit a6a9d02

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

Providers/FreeSql.Provider.KingbaseES/KingbaseESCodeFirst.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,17 @@ public void InitIsSysV8R3()
149149
protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects)
150150
{
151151
InitIsSysV8R3();
152+
var builder = new System.Data.Common.DbConnectionStringBuilder
153+
{
154+
ConnectionString = _orm.Ado.ConnectionString
155+
};
156+
var searchPath = builder.ContainsKey("SearchPath") ? builder["SearchPath"].ToString() : "PUBLIC"; //读取链接字符串中的SearchPath 来确定架构模式
157+
if (searchPath.Contains(','))
158+
{
159+
searchPath = searchPath.Split(',')[0];
160+
}
152161
var pg_ = _isSysV8R3 == true ? "sys_" : "pg_";
153-
var public_ = _isSysV8R3 == true ? "PUBLIC" : "public";
162+
var public_ = _isSysV8R3 == true ? searchPath.ToUpper() : searchPath;
154163
var sb = new StringBuilder();
155164
var seqcols = new List<NativeTuple<ColumnInfo, string[], bool>>(); //序列
156165

@@ -182,11 +191,11 @@ protected override string GetComparisonDDLStatements(params TypeSchemaAndName[]
182191

183192
var sbalter = new StringBuilder();
184193
var istmpatler = false; //创建临时表,导入数据,删除旧表,修改
185-
if (_orm.Ado.ExecuteScalar(CommandType.Text, string.Format($" select 1 from {pg_}tables a inner join {pg_}namespace b on b.nspname = a.schemaname where b.nspname || '.' || a.tablename = '{{0}}.{{1}}'", tbname)) == null)
194+
if (_orm.Ado.ExecuteScalar(CommandType.Text, string.Format($" select 1 from {pg_}tables a inner join {pg_}namespace b on b.nspname = a.schemaname where b.nspname ='{{0}}' && a.tablename = '{{1}}'", tbname)) == null)//原判断V9版本存在问题
186195
{ //表不存在
187196
if (tboldname != null)
188197
{
189-
if (_orm.Ado.ExecuteScalar(CommandType.Text, string.Format($" select 1 from {pg_}tables a inner join {pg_}namespace b on b.nspname = a.schemaname where b.nspname || '.' || a.tablename = '{{0}}.{{1}}'", tboldname)) == null)
198+
if (_orm.Ado.ExecuteScalar(CommandType.Text, string.Format($" select 1 from {pg_}tables a inner join {pg_}namespace b on b.nspname = a.schemaname where b.nspname ='{{0}}' && a.tablename = '{{1}}'", tboldname)) == null)
190199
//旧表不存在
191200
tboldname = null;
192201
}
@@ -388,7 +397,7 @@ d.description as comment
388397
inner join {pg_}namespace b on b.oid = a.relnamespace
389398
left join {pg_}description d on d.objoid = a.oid and objsubid = 0
390399
where upper(b.nspname) not in ('SYS_CATALOG', 'INFORMATION_SCHEMA', 'TOPOLOGY', 'SYSAUDIT', 'SYSLOGICAL', 'SYS_TEMP_1', 'SYS_TOAST', 'SYS_TOAST_TEMP_1', 'XLOG_RECORD_READ') and a.relkind in ('r') and b.nspname = {{0}} and a.relname = {{1}}
391-
and upper(b.nspname || '.' || a.relname) not in ('PUBLIC.GEOGRAPHY_COLUMNS','PUBLIC.GEOMETRY_COLUMNS','PUBLIC.RASTER_COLUMNS','PUBLIC.RASTER_OVERVIEWS')", tbname[0], tbname[1])));
400+
and upper(text(b.nspname || '.' || a.relname)) not in ('PUBLIC.GEOGRAPHY_COLUMNS','PUBLIC.GEOMETRY_COLUMNS','PUBLIC.RASTER_COLUMNS','PUBLIC.RASTER_OVERVIEWS')", tbname[0], tbname[1])));//解决报错 function upper(boolean) is not unique 错误的问题
392401
if (dbcomment != (tb.Comment ?? ""))
393402
sbalter.Append("COMMENT ON TABLE ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append(" IS ").Append(_commonUtils.FormatSql("{0}", tb.Comment)).Append(";\r\n");
394403

128 KB
Binary file not shown.

0 commit comments

Comments
 (0)