Skip to content

Commit 391f86d

Browse files
fix: deduplication declare param in yql query, discovery log level info to debug
1 parent a69d303 commit 391f86d

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/Ydb.Sdk/src/Ado/Internal/SqlParser.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ internal static ParsedResult Parse(string sql)
1717

1818
var newYql = new StringBuilder();
1919
var paramNames = new List<string>();
20+
var foundParamNames = new HashSet<string>();
2021

2122
var prevToken = 0;
2223

@@ -114,7 +115,12 @@ internal static ParsedResult Parse(string sql)
114115

115116
var originalParamName = $"${sql[prevToken .. curToken]}";
116117

117-
paramNames.Add(originalParamName);
118+
if (!foundParamNames.Contains(originalParamName))
119+
{
120+
paramNames.Add(originalParamName);
121+
}
122+
123+
foundParamNames.Add(originalParamName);
118124
newYql.Append(originalParamName);
119125
prevToken = curToken;
120126

src/Ydb.Sdk/src/Driver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ private async Task<Status> DiscoverEndpoints()
155155

156156
var resultProto = response.Operation.Result.Unpack<ListEndpointsResult>();
157157

158-
Logger.LogInformation(
158+
Logger.LogDebug(
159159
"Successfully discovered endpoints: {EndpointsCount}, self location: {SelfLocation}, sdk info: {SdkInfo}",
160160
resultProto.Endpoints.Count, resultProto.SelfLocation, _sdkInfo);
161161

src/Ydb.Sdk/tests/Ado/Internal/SqlParserTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,4 +241,13 @@ public void Parse_WhenMultilineStringLiterals_ReturnSql()
241241
SELECT $param; SELECT $p2; SELECT $p_3;", sql);
242242
Assert.Equal(new[] { "$param", "$p2", "$p_3" }, paramNames);
243243
}
244+
245+
[Fact]
246+
public void Parse_WhenRepeatedOneParam_ReturnThisParamInParamNames()
247+
{
248+
var (sql, paramNames) = SqlParser.Parse("SELECT @a, @a, @a;");
249+
250+
Assert.Equal("SELECT $a, $a, $a;", sql);
251+
Assert.Equal(new[] { "$a" }, paramNames);
252+
}
244253
}

0 commit comments

Comments
 (0)