-
-
Notifications
You must be signed in to change notification settings - Fork 69
Correction of the return values of the DatabaseInfo methods for determining the insert, read and delete operations #1183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 15 commits
b492cce
c39be07
1fd2464
9112e28
c00d785
124e5f3
c43a1bf
72ed318
aa0d9f7
2acda4a
7edc7ee
367af06
600fb37
3f1e72c
a9311a0
cef7087
e720df4
bf09d5a
fa0f53c
9470f22
187ab1c
fe4c525
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,6 +16,7 @@ | |
//$Authors = Carlos Guzman Alvarez, Jiri Cincura ([email protected]) | ||
|
||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Reflection; | ||
using System.Threading; | ||
|
@@ -61,4 +62,121 @@ public void CompleteDatabaseInfoTest() | |
Assert.DoesNotThrowAsync(() => (Task)m.Invoke(dbInfo, new object[] { CancellationToken.None }), m.Name); | ||
} | ||
} | ||
|
||
[Test] | ||
public async Task PerformanceAnalysis_SELECT_Test() | ||
{ | ||
var tableNameList = GetTableNameList(); | ||
var tableIdTest = tableNameList["TEST"]; | ||
|
||
var dbInfo = new FbDatabaseInfo(Connection); | ||
var insertCount = await dbInfo.GetInsertCountAsync(); | ||
var updateCount = await dbInfo.GetUpdateCountAsync(); | ||
var readSeqCount = await dbInfo.GetReadSeqCountAsync(); | ||
var readIdxCount = await dbInfo.GetReadIdxCountAsync(); | ||
|
||
var fbCommand = new FbCommand("SELECT MAX(INT_FIELD) FROM TEST", Connection); | ||
var maxIntField = await fbCommand.ExecuteScalarAsync() as int?; | ||
|
||
insertCount = GetAffectedTables(insertCount, await dbInfo.GetInsertCountAsync()); | ||
updateCount = GetAffectedTables(updateCount, await dbInfo.GetUpdateCountAsync()); | ||
readSeqCount = GetAffectedTables(readSeqCount, await dbInfo.GetReadSeqCountAsync()); | ||
readIdxCount = GetAffectedTables(readIdxCount, await dbInfo.GetReadIdxCountAsync()); | ||
|
||
Assert.That(insertCount.ContainsKey(tableIdTest), Is.False); | ||
Assert.That(updateCount.ContainsKey(tableIdTest), Is.False); | ||
Assert.That(readSeqCount.ContainsKey(tableIdTest), Is.True); | ||
Assert.That(readSeqCount[tableIdTest], Is.EqualTo(maxIntField + 1)); | ||
Assert.That(readIdxCount.ContainsKey(tableIdTest), Is.False); | ||
} | ||
|
||
[Test] | ||
public async Task PerformanceAnalysis_INSERT_Test() | ||
{ | ||
var tableNameList = GetTableNameList(); | ||
var tableIdTest = tableNameList["TEST"]; | ||
|
||
var dbInfo = new FbDatabaseInfo(Connection); | ||
var insertCount = await dbInfo.GetInsertCountAsync(); | ||
var updateCount = await dbInfo.GetUpdateCountAsync(); | ||
var readSeqCount = await dbInfo.GetReadSeqCountAsync(); | ||
var readIdxCount = await dbInfo.GetReadIdxCountAsync(); | ||
|
||
var fbCommand = new FbCommand("INSERT INTO TEST (INT_FIELD) VALUES (900)", Connection); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does not look like it's here. |
||
await fbCommand.ExecuteNonQueryAsync(); | ||
|
||
insertCount = GetAffectedTables(insertCount, await dbInfo.GetInsertCountAsync()); | ||
updateCount = GetAffectedTables(updateCount, await dbInfo.GetUpdateCountAsync()); | ||
readSeqCount = GetAffectedTables(readSeqCount, await dbInfo.GetReadSeqCountAsync()); | ||
readIdxCount = GetAffectedTables(readIdxCount, await dbInfo.GetReadIdxCountAsync()); | ||
|
||
Assert.That(insertCount.ContainsKey(tableIdTest), Is.True); | ||
Assert.That(insertCount[tableIdTest], Is.EqualTo(1)); | ||
Assert.That(updateCount.ContainsKey(tableIdTest), Is.False); | ||
Assert.That(readSeqCount.ContainsKey(tableIdTest), Is.False); | ||
Assert.That(readIdxCount.ContainsKey(tableIdTest), Is.False); | ||
} | ||
|
||
[Test] | ||
public async Task PerformanceAnalysis_UPDATE_Test() | ||
{ | ||
var tableNameList = GetTableNameList(); | ||
var tableIdTest = tableNameList["TEST"]; | ||
|
||
var fbCommand = new FbCommand("INSERT INTO TEST (INT_FIELD) VALUES (900)", Connection); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does not look like it's here. |
||
fbCommand.ExecuteNonQuery(); | ||
|
||
var dbInfo = new FbDatabaseInfo(Connection); | ||
var insertCount = await dbInfo.GetInsertCountAsync(); | ||
var updateCount = await dbInfo.GetUpdateCountAsync(); | ||
var readSeqCount = await dbInfo.GetReadSeqCountAsync(); | ||
var readIdxCount = await dbInfo.GetReadIdxCountAsync(); | ||
|
||
fbCommand.CommandText = "UPDATE TEST SET SMALLINT_FIELD = 900 WHERE (INT_FIELD = 900)"; | ||
await fbCommand.ExecuteNonQueryAsync(); | ||
|
||
insertCount = GetAffectedTables(insertCount, await dbInfo.GetInsertCountAsync()); | ||
updateCount = GetAffectedTables(updateCount, await dbInfo.GetUpdateCountAsync()); | ||
readSeqCount = GetAffectedTables(readSeqCount, await dbInfo.GetReadSeqCountAsync()); | ||
readIdxCount = GetAffectedTables(readIdxCount, await dbInfo.GetReadIdxCountAsync()); | ||
|
||
Assert.That(insertCount.ContainsKey(tableIdTest), Is.False); | ||
Assert.That(updateCount.ContainsKey(tableIdTest), Is.True); | ||
Assert.That(updateCount[tableIdTest], Is.EqualTo(1)); | ||
Assert.That(readSeqCount.ContainsKey(tableIdTest), Is.False); | ||
Assert.That(readIdxCount.ContainsKey(tableIdTest), Is.True); | ||
Assert.That(readIdxCount[tableIdTest], Is.EqualTo(1)); | ||
} | ||
|
||
IDictionary<short, ulong> GetAffectedTables(IDictionary<short, ulong> statisticInfoBefore, IDictionary<short, ulong> statisticInfoAfter) | ||
{ | ||
var result = new Dictionary<short, ulong>(); | ||
foreach (var keyValuePair in statisticInfoAfter) | ||
{ | ||
if (statisticInfoBefore.TryGetValue(keyValuePair.Key, out var value)) | ||
{ | ||
var counter = keyValuePair.Value - value; | ||
if (counter > 0) | ||
{ | ||
result.Add(keyValuePair.Key, counter); | ||
} | ||
} | ||
else | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does not look like it's here. |
||
result.Add(keyValuePair.Key, keyValuePair.Value); | ||
} | ||
return result; | ||
} | ||
|
||
IDictionary<string, short> GetTableNameList() | ||
{ | ||
IDictionary<string, short> result = new Dictionary<string, short>(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does not look like it's here. |
||
|
||
var command = new FbCommand("select R.RDB$RELATION_ID, R.RDB$RELATION_NAME from RDB$RELATIONS R WHERE RDB$SYSTEM_FLAG = 0", Connection); | ||
DevM900 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
var reader = command.ExecuteReader(); | ||
DevM900 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
while (reader.Read()) | ||
{ | ||
result.Add(reader.GetString(1).Trim(), reader.GetInt16(0)); | ||
DevM900 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
return result; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
await using
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does not look like it's here.