-
- Notifications
You must be signed in to change notification settings - Fork 74
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 8 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 (jiri@cincura.net) | ||
| | ||
| using System; | ||
| using System.Collections.Generic; | ||
| using System.Linq; | ||
| using System.Reflection; | ||
| using System.Threading; | ||
| | @@ -61,4 +62,119 @@ public void CompleteDatabaseInfoTest() | |
| Assert.DoesNotThrowAsync(() => (Task)m.Invoke(dbInfo, new object[] { CancellationToken.None }), m.Name); | ||
| } | ||
| } | ||
| | ||
| [Test] | ||
| public void PerformanceAnalysis_SELECT_Test() | ||
| { | ||
| IDictionary<string, short> tableNameList = GetTableNameList(); | ||
| short tableIdTest = tableNameList["TEST"]; | ||
| | ||
| var dbInfo = new FbDatabaseInfo(Connection); | ||
| IDictionary<short, ulong> insertCount = dbInfo.GetInsertCount(); | ||
| IDictionary<short, ulong> updateCount = dbInfo.GetUpdateCount(); | ||
| IDictionary<short, ulong> readSeqCount = dbInfo.GetReadSeqCount(); | ||
| IDictionary<short, ulong> readIdxCount = dbInfo.GetReadIdxCount(); | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| | ||
| var fbCommand = new FbCommand("SELECT MAX(INT_FIELD) FROM TEST", 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. | ||
| var maxIntField = fbCommand.ExecuteScalar() as int?; | ||
| | ||
| insertCount = GetAffectedTables(insertCount, dbInfo.GetInsertCount()); | ||
| updateCount = GetAffectedTables(updateCount, dbInfo.GetUpdateCount()); | ||
| readSeqCount = GetAffectedTables(readSeqCount, dbInfo.GetReadSeqCount()); | ||
| readIdxCount = GetAffectedTables(readIdxCount, dbInfo.GetReadIdxCount()); | ||
| | ||
| 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 void PerformanceAnalysis_INSERT_Test() | ||
| { | ||
| IDictionary<string, short> tableNameList = GetTableNameList(); | ||
| short tableIdTest = tableNameList["TEST"]; | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| | ||
| var dbInfo = new FbDatabaseInfo(Connection); | ||
| IDictionary<short, ulong> insertCount = dbInfo.GetInsertCount(); | ||
| IDictionary<short, ulong> updateCount = dbInfo.GetUpdateCount(); | ||
| IDictionary<short, ulong> readSeqCount = dbInfo.GetReadSeqCount(); | ||
| IDictionary<short, ulong> readIdxCount = dbInfo.GetReadIdxCount(); | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| | ||
| 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(); | ||
| | ||
| insertCount = GetAffectedTables(insertCount, dbInfo.GetInsertCount()); | ||
| updateCount = GetAffectedTables(updateCount, dbInfo.GetUpdateCount()); | ||
| readSeqCount = GetAffectedTables(readSeqCount, dbInfo.GetReadSeqCount()); | ||
| readIdxCount = GetAffectedTables(readIdxCount, dbInfo.GetReadIdxCount()); | ||
| | ||
| 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 void PerformanceAnalysis_UPDATE_Test() | ||
| { | ||
| IDictionary<string, short> tableNameList = GetTableNameList(); | ||
| short tableIdTest = tableNameList["TEST"]; | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| | ||
| 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); | ||
| IDictionary<short, ulong> insertCount = dbInfo.GetInsertCount(); | ||
| IDictionary<short, ulong> updateCount = dbInfo.GetUpdateCount(); | ||
| IDictionary<short, ulong> readSeqCount = dbInfo.GetReadSeqCount(); | ||
| IDictionary<short, ulong> readIdxCount = dbInfo.GetReadIdxCount(); | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| | ||
| fbCommand.CommandText = "UPDATE TEST SET SMALLINT_FIELD = 900 WHERE (INT_FIELD = 900)"; | ||
| fbCommand.ExecuteNonQuery(); | ||
| | ||
| insertCount = GetAffectedTables(insertCount, dbInfo.GetInsertCount()); | ||
| updateCount = GetAffectedTables(updateCount, dbInfo.GetUpdateCount()); | ||
| readSeqCount = GetAffectedTables(readSeqCount, dbInfo.GetReadSeqCount()); | ||
| readIdxCount = GetAffectedTables(readIdxCount, dbInfo.GetReadIdxCount()); | ||
| | ||
| 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)); | ||
| } | ||
| | ||
| private IDictionary<short, ulong> GetAffectedTables(IDictionary<short, ulong> aStatisticInfoBefore, IDictionary<short, ulong> aStatisticInfoAfter) | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| { | ||
| var result = new Dictionary<short, ulong>(); | ||
| foreach (KeyValuePair<short, ulong> keyValuePair in aStatisticInfoAfter) | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| { | ||
| if (aStatisticInfoBefore.TryGetValue(keyValuePair.Key, out ulong value)) | ||
| { | ||
| ulong counter = keyValuePair.Value - value; | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| 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; | ||
| } | ||
| | ||
| private IDictionary<string, short> GetTableNameList() | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| { | ||
| 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. Outdated Show resolved Hide resolved | ||
| FbDataReader reader = command.ExecuteReader(); | ||
cincuranet marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| while (reader.Read()) | ||
| { | ||
| result.Add(reader.GetString(1).Trim(), reader.GetInt16(0)); | ||
DevM900 marked this conversation as resolved. Outdated Show resolved Hide resolved | ||
| } | ||
| return result; | ||
| } | ||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.