From 6d483a5ad9cf6fdd7b4554531b08cefae5590d03 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Tue, 19 Sep 2023 14:54:40 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20MySql=20AsTreeCte=20ct?= =?UTF-8?q?e=5Fpath=20=E5=8F=AF=E8=83=BD=E9=95=BF=E5=BA=A6=E8=BF=87?= =?UTF-8?q?=E7=9F=AD=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql/Extensions/FreeSqlGlobalExtensions.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs index 339470e7..04fc694b 100644 --- a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs +++ b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs @@ -733,6 +733,7 @@ JOIN {select._commonUtils.QuoteSqlName(tbDbName)} a ON cte_tbc.cte_id = a.{selec } var sql1ctePath = ""; + var wct2ctePath = ""; if (pathSelector != null) { select._tables[0].Parameter = pathSelector?.Parameters[0]; @@ -750,9 +751,18 @@ JOIN {select._commonUtils.QuoteSqlName(tbDbName)} a ON cte_tbc.cte_id = a.{selec case DataType.Firebird: case DataType.ClickHouse: sql1ctePath = select._commonExpression.ExpressionWhereLambda(select._tables, select._tableRule, Expression.Call(typeof(Convert).GetMethod("ToString", new Type[] { typeof(string) }), pathSelector?.Body), select._diymemexpWithTempQuery, null, null); + wct2ctePath = sql1ctePath = select._commonExpression.ExpressionWhereLambda(select._tables, select._tableRule, pathSelector?.Body, select._diymemexpWithTempQuery, null, null); + break; + case DataType.MySql: + case DataType.OdbcMySql: + case DataType.CustomMySql: + sql1ctePath = select._commonExpression.ExpressionWhereLambda(select._tables, select._tableRule, pathSelector?.Body, select._diymemexpWithTempQuery, null, null); + sql1ctePath = $"CAST({sql1ctePath} as char(2000))"; + wct2ctePath = sql1ctePath; break; default: sql1ctePath = select._commonExpression.ExpressionWhereLambda(select._tables, select._tableRule, pathSelector?.Body, select._diymemexpWithTempQuery, null, null); + wct2ctePath = sql1ctePath; break; } sql1ctePath = $"{sql1ctePath} as cte_path, "; @@ -770,7 +780,6 @@ JOIN {select._commonUtils.QuoteSqlName(tbDbName)} a ON cte_tbc.cte_id = a.{selec if (pathSelector != null) { select._tables[0].Parameter = pathSelector?.Parameters[0]; - var wct2ctePath = select._commonExpression.ExpressionWhereLambda(select._tables, select._tableRule, pathSelector?.Body, select._diymemexpWithTempQuery, null, null); sql2ctePath = select._commonUtils.StringConcat( new string[] { up == false ? "wct1.cte_path" : wct2ctePath,