* experimental showplan implementation (tools side only)
* fix for redundant massages from showplan executions
* moved showplan batches to new variables to make it less confusing
* returns showplan as part of batch summary with in each result summary
* cleaned up showplan resultsets
* cleaning up code and making showplan var optional
* changes all var names to showplan
* adding estimated support
* small fixes
* updatin var names and adding EPOptions struct
* adding ssms execution plan logic based on server types
* adding special actions logic
* removing redundant name changes
* execution plan query handler added
* cleaning up functions and data structures
* seperated special actions into its own class
* cleaning up special actions
* cleaning up code
* small new line fixes
* commenting out pre-yukon code
* removing all pre yukon code
* last yukon code commented out
* fixes broken tests
* adding related unit tests; integration tests incoming
* finishing tests and cleaning up code
* semantic changes
* cleaning up semantics
* changes and test fixes, also adding new exceptions into RS
* fixing special actions and cleaning up request logic
* fixing comment to trigger new build
* triggering another build
* fixed up specialaction and added tests for it
This is a documentation-only update so automerging. Please review the commit if there are any follow-ups requested.
* Update .gitignore for docfx genertated files
* Update documenation (part 1)
* Update docs and add some samples
* More doc updates
The main change in this pull request is to add a new event that will be fired upon completion of a resultset but before the completion of a batch. This event will only fire if a resultset is available and generated.
Changes:
* ConnectionService - Slight changes to enable mocking, cleanup
* Batch - Moving summary generation into ResultSet class, adding generation of ordinals for resultset and locking of result set list (which needs further refinement, but would be outside scope of this change)
* Adding new event and associated parameters for completion of a resultset. Params return the resultset summary
* Adding logic for assigning the event a handler in the query execution service
* Adding unit tests for testing the new event /making sure the existing tests work
* Refactoring some private properties into member variables
* Refactor to remove SectionData class in favor of BufferRange
* Adding callback for batch completion that will let the extension know that a batch has completed execution
* Refactoring to make progressive results work as per async query execution
* Allowing retrieval of batch results while query is in progress
* reverting global.json, whoops
* Adding a few missing comments, and fixing a couple code style bugs
* Using SelectionData everywhere again
* One more missing comment
* Adding new notification type for result set completion
* Plumbing event for result set completion
* Unit tests for result set events
This includes a fairly substantial change to create a mock of the
ConnectionService and to create separate memorystream storage arrays. It
preserves more correct behavior with a integration test, fixes an issue
where the test db reader will return n-1 rows because the Reliable
Connection Helper steals a record.
* Adding locking to ResultSets for thread safety
* Adding/fixing unit tests
* Adding batch ID to result set summary
This is a fairly large set of changes to the unit tests that help isolate the effectiveness of the unit tests.
* Unit tests for query execution have been split into separate files for different classes.
* Unit tests have been added for the ResultSet class which previously did not have tests
* The InMemoryStreamWrapper has been improved to share memory, creating a simulated filesystem
* Creating a mock ConnectionService to decrease noisy exceptions and prevent "row stealing". Unfortunately this lowers code coverage. However, since the tests that touched the connection service were not really testing it, this helps keep us honest. But it will require adding more unit tests for connection service.
* Standardizing the await mechanism for query execution
* Cleaning up the mechanism for getting WorkspaceService mocks and mock FileStreamFactories
* Refactor the query execution tests into their own files
* Removing tests from ExecuteTests.cs that were moved to separate files
* Adding tests for ResultSet class
* Adding test for the FOR XML/JSON component of the resultset class
* Setting up shared storage between file stream readers/writers
* Standardizing on Workspace mocking, awaiting execution completion
* Adding comment for ResultSet class
* Ported ReliableConnectionTests from DacFx and added a few more tests
* Fix style
* Created integration tests configuration and fixed minor test issue
* Disable failing test while investigating
* Made connection errors more user-friendly (#57)
* Bug/negativeOneRowsAffected strings file fix (#61)
* Adding changes to sr.strings files
* Fixing bug by changing valid filename check to fail on whitespace (#55)
Fixing a bug from the unit tests on OSX/Unix where attempting to create a file with a name that's all whitespace succeeds when it should fail. This was passing in Windows because File.Open throws an ArgumentException when an all whitespace name is provided. In Unix systems, File.Open does not throw, causing the test to fail.
Solution is to check for whitespace in the sanity check.
* Format Cell Values (#62)
* WIP for ability to localize cell values
* Changing how DateTimeOffsets are stored, getting unit tests going
* Reworking BufferFileStreamWriter to use dictionary approach
* Plumbing the DbCellValue type the rest of the way through
* Removing unused components to simplify contract
* Cleanup and making sure byte[] appears in parity with SSMS
* CR comments, small tweaks for optimizing LINQ
* Feature/batch line info (#56)
* inital pipe of line numbers and getting text from workspace services
* tests compile
* Fixed bug regarding tests using connections on mac
* updated tests
* fixed workspace service and fixed tests
* integrated feedback
* Remove deleted file with whitespace name
* Feature/autocomp options (#63)
* Enable IntelliSense settings
* Fix up some bugs in the IntelliSense settings.
* Code cleans for PR
* Fix a couple exceptions that are breaks query execute and intellisense.
* Add useLowerCase flag and settings tests
* Remove task.wait from test to avoid break on build machine. (#67)
This is to fix test breaks so I'll merge now. Please let me know if there are comments on this commit.
* Do not use ReliableCommand in the query execution service (#66)
* Do not use ReliableCommand in the query execution service.
* Fixing the logic to remove InfoMessage handlers from ReliableSqlConnection
* Adding test to query UDT
* Bump SMO to 140.1.6 to pick up perf fixes (#69)
* Enable Quick Info hover tooltips (#65)
Pushing to include in tomorrow's partner release build. Please send me any feedback and I'll address in the next Intellisense PR.
* Added grouping between system/user dbs when listing (#70)
* Feature/timestamp messages (#68)
* added support for timestamps
* fixed tests
* Moved message class to own file; added 'z' to end of date strings
* added default time constructor
* removed unnecessary z
* added time string format info in comment
* changed from utc time to using local time
* Feature/save selection (#64)
* Save selection
* Add tests
* Change filename in test
* Code cleanup
* Refactor handler
* Code cleanup
* Modify tests to have query selection
* Change variable declaration
* Bump SMO to 14.0.7 to pick Batchparser updates (#72)
...bumping versions. No review needed.
* Lingering File Handles (#71)
Fixing a bug where in various situations, the files used for temporary storage of query results would be leftover. In particular, the following changes were made:
* When the dispose query request is submitted, the corresponding query is now disposed in addition from being removed from the list of active queries
* When a query is cancelled, it is disposed after it is cancelled
* If a query already exists for a given ownerURI, the existing query is disposed before creating a new query
* All queries are disposed when the query execution service is disposed (ie, at shutdown of the service)
A unit test to verify the action of the dispose method for a ResultSet was added.
* Ensuring queries are disposed
Adding logic to dispose any queries when:
* URI that already has a query executes another query
* A request to dispose a query is submitted
* A request to cancel a query is submitted
* Small tweaks for cleanup of query execution service
* Add IntelliSense binding queue (#73)
* Initial code for binding queue
* Fix-up some of the timeout wait code
* Add some initial test code
* Add missing test file
* Update the binding queue tests
* Add more test coverage and refactor a bit. Disable reliabile connection until we can fix it..it's holding an open data reader connection.
* A few more test updates
* Initial integrate queue with language service.
* Hook up the connected binding queue into al binding calls.
* Cleanup comments and remove dead code
* More missing comments
* Fix build break. Reenable ReliabileConnection.
* Revert all changes to SqlConnectionFactory
* Resolve merge conflicts
* Cleanup some more of the timeouts and sync code
* Address code review feedback
* Address more code review feedback
* Feature/connect cancel (#74)
* Implemented connection cancellation
* Made connect requests return immediately and created a separate connection complete notification
* Fix spelling
* Fix sorting
* Add separate lock for cancellation source map
* Fix an issue with queue deadlocks causing test failures (#77)
* Fixed issue where connecting could take very long and cancellation would not work (#78)
* Fixed issue where connecting could take very long and cancellation would not work
* Addressing feedback
* Remove warning suppression
* Adding unlimited timeout for query execution (#76)
Adding explicitly setting the timeout for command execution to unlimited. We can change this to be user configurable at a later time
* Support 'for XML and for JSON' queries (#75)
* Set isXMl and isJson for 'for xml/json' resultSets
* Change string comparison
* Modify if-else
* VSTS 8499785. Close SqlToolsService after VS Code exits. (#80)
VSTS 8499785. Close SqlToolsService after VS Code exits.
* Remove extra level of tasks in binding queue (#79)
* Remove extra layer of tasks in binding queue
* Change order of assigning result to avoid race condition
* Add timeout log for the metadata lock event
* Fix test cases
* Implemented connection cancellation
* Made connect requests return immediately and created a separate connection complete notification
* Fix spelling
* Fix sorting
* Add separate lock for cancellation source map
* Initial code for binding queue
* Fix-up some of the timeout wait code
* Add some initial test code
* Add missing test file
* Update the binding queue tests
* Add more test coverage and refactor a bit. Disable reliabile connection until we can fix it..it's holding an open data reader connection.
* A few more test updates
* Initial integrate queue with language service.
* Hook up the connected binding queue into al binding calls.
* Cleanup comments and remove dead code
* More missing comments
* Fix build break. Reenable ReliabileConnection.
* Revert all changes to SqlConnectionFactory
* Resolve merge conflicts
* Cleanup some more of the timeouts and sync code
* Address code review feedback
* Address more code review feedback
* Enable IntelliSense settings
* Fix up some bugs in the IntelliSense settings.
* Code cleans for PR
* Fix a couple exceptions that are breaks query execute and intellisense.
* Add useLowerCase flag and settings tests
* inital pipe of line numbers and getting text from workspace services
* tests compile
* Fixed bug regarding tests using connections on mac
* updated tests
* fixed workspace service and fixed tests
* integrated feedback
* Strings sweep for connection service
* String sweep for credentials service
* String sweep for hosting
* String sweep for query execution service
* String sweep for Workspace service
* Renaming utility namespace to match standards
Renaming Microsoft.SqlTools.EditorServices.Utility to
Microsoft.SqlTools.ServiceLayer.Utility to match the naming changes done a
while back. Also renaming them on the files that use them
* Namespace change on reliable connection
* Adding the new resx and designer files
* Final bug fixes for srgen
Fixing flakey moq package name
* Removing todo as per @kevcunnane
* Adding using statements as per @llali's comment
* Fixing issues from broken unit tests
Note: This feature contains changes that will break the contract for
saving as CSV and JSON. On success, null is returned as a message instead
of "Success". Changes will be made to the vscode component to handle this
change.
* Initial commit of reliable connection port
* Made ReliableSqlConnection inherit from DbConnection instead of IDbConnection
* Cleanup
* Fixed autocomplete service to use reliable connection
* Fix copyright headers
* Renamed ConnectResponse.Server to ServerInfo
* Removed unused using
* Addressing code review feedback
- On Connecting to a server with no DB specified, we will actually get a connection to Master or some default DB.
- This DB should be used when notifying others of a new connection, and when returning information to the caller so that the correct name can be displayed in the UI.
- Added basic unit tests to cover this scenario
* CredentialService initial impl with Win32 support
- Basic CredentialService APIs for Save, Read, Delete
- E2E unit tests for Credential Service
- Win32 implementation with unit tests
* Save Password support on Mac v1
- Basic keychain support on Mac using Interop with the KeyChain APIs
- All but 1 unit test passing. This will pass once API is changed, but checking this in with the existing API so that if we decide to alter behavior, we have a reference point.
* Remove Username from Credentials API
- Removed Username option from Credentials as this caused conflicting behavior on Mac vs Windows
* Cleanup Using Statements and add Copyright
* Linux CredentialStore Prototype
* Linux credential store support
- Full support for Linux credential store with tests
* Plumbed CredentialService into Program init
* Addressing Pull Request comments
- Basic plumbing to support connections for a URI rather than global connections. Typical use case is editor requests to connect, but this isn't the only possible use
- Tests pass but need updating to cover new functionality, and re-enable AutoCompleteService test once there is a ServiceDiscovery component that registers and returns services. This is necessary as .Instance won't allow for dependency injection and proper testing.