Commit Graph

132 Commits

Author SHA1 Message Date
Karl Burtram
151a2de625 Query execution settings support (#812)
* WIP

* WIP 3

* WIP 3

* Additional query settings updates

* Add settings tets

* Address code review feeback

* Updates from testing
2019-05-16 15:21:17 -07:00
Karl Burtram
eaaff8b8a1 Remove Peek Definition error popup (#786)
* Remove Peek Definition error popup

* Fix broken test case

* Fix bug
2019-03-22 16:52:45 -07:00
Karl Burtram
3c915a92f6 Send a Object Explorer session disconnect message on socket exceptions (#739)
* WIP

* WIP 2

* Send disconnect message o binding exception

* Add a try catch around the binding queue error handler
2018-11-16 12:07:05 -08:00
Matt Irvine
7f28f249de Add support for Azure Active Directory connections (#727) 2018-11-13 11:50:30 -08:00
Karl Burtram
adf10ece87 Wait for queued tasks to complete before processing subsequent tasks (#724) 2018-10-31 09:48:57 -07:00
Matt Irvine
f45155aa4a Fix OE and Binding Queue reliability bugs (#702) 2018-10-05 14:14:36 -07:00
ranasaria
09652cccd1 Enhanced Logging for sqltoolsservice (#695)
This change modifies the logging framework within sqltoolservice.
Moves away from custom Logger object to start using .Net tracing framework. It supports for the static Trace and TraceSource way of logging. For all new code it is recommend that we log the log messages using the existing static Logger class, while the code changes will continue to route the older Trace.Write* calls from the process to same log listeners (and thus the log targets) as used by the Logger class. Thus tracing in SMO code that uses Trace.Write* methods gets routed to the same file as the messages from rest of SQLTools Service code.
Make changes to start using .Net Frameworks codebase for all logging to unify our logging story.
Allows parameter to set tracingLevel filters that controls what kinds of message make it to the log file.
Allows a parameter to set a specific log file name so if these gets set by external code (the UI code using the tools service for example) then the external code is aware of the current log file in use.
Adding unittests to test out the existing and improved logging capabilities.


Sequences of checkins in development branch:
* Saving v1 of logging to prepare for code review. Minor cleanup and some end to end testing still remains
* Removing local launchSettings.json files
* added support for lazy listener to sqltoolsloglistener and removed incorrect changes to comments across files in previous checkin
* Converting time to local time when writing entries to the log
* move the hosting.v2 to new .net based logging code
* removing *.dgml files and addding them to .gitignore
* fixing typo of defaultTraceSource
* Addressing pull request feedback
* Adding a test to verify logging from SMO codebase
* propogating changes to v1 sqltools.hosting commandoptions.cs to the v2 version
* Fixing comments on start and stop callstack methods and whitespaces
* Commenting a test that got uncommented by mistake
* addding .gitattributes file as .sql file was observed to be misconstrued as a binary file
2018-09-24 23:55:59 -07:00
Aditya Bist
7c7395fce0 Added support for T-SQL parse (#642)
* added support for t-sql parse

* added syntax parse to language service instead

* fixed misleading error

* code review comments
2018-06-26 14:19:05 -07:00
Karl Burtram
5cfb4fa9dc Add between to keyword completion list (#618) 2018-05-15 12:06:11 -07:00
Matt Irvine
6f2c33c41c Catch parser errors to prevent crashing (#617) 2018-05-15 09:48:17 -07:00
Kevin Cunnane
e02592460b Reduce unit test time by 1 minute (#607)
ObjectExplorerTests were adding 1 minute to total test time due to
unnecessarily trying and failing to connect to a non-existent server.
Mocking out this call saves 1minute, reducing test time in half
2018-04-30 22:15:38 -07:00
Karl Burtram
aacb435cba Add 'UPDATE' to default intellisense keywords list (#602) 2018-04-16 15:33:59 -07:00
Karl Burtram
a0024cc522 Return null instead of empty Hover (#598) 2018-04-04 17:08:40 -07:00
Leila Lali
54c29f20a6 binding queue should not throw excpetion if fails to connect (#542) 2017-11-02 10:53:18 -07:00
Karl Burtram
7ccf78aec1 Add group id and db display name to OE connection queue key (#531) 2017-10-26 10:56:22 -07:00
Leila Lali
76e26268ec removing th oe binding context on closing session (#529) 2017-10-26 10:54:34 -07:00
Kate Shin
cc9beed835 Fix file browser cancel/connetion issues (#528)
* clean bindingqueue after cancel

* fileborwser fixes

* code cleanup

* re-initialize filetree whenever filter is changed

* fix test issues

* address pr comments
2017-10-26 10:54:22 -07:00
Aditya Bist
97fa99a713 fixed failing integration tests (#512)
* fixed failing integration tests

* close connection after test

* undo close connection
2017-10-21 11:10:38 -07:00
Kate Shin
db32cee0d7 Fix filebrowser to handle cancellation and multiple open/expand requests (#499)
* add cancel filebrowser request

* update expand request contract

* cleanup

* add queue

* add expand queue and update cancellation

* dispose cancelsource

* remove unnecessary field

* cleanup using directives

* address pr comment

* more changes

* change contract
2017-10-21 11:05:31 -07:00
Karl Burtram
328fb30db2 Switch back to Tasks in binding queue (#510) 2017-10-19 16:05:24 -07:00
Kevin Cunnane
4b66203dfc Fix tools service crash + improve server edition naming (#506)
* Fix https://github.com/Microsoft/vscode-mssql/issues/986 and add better server edition naming
- Fixed a number of issues related to the binding queue, specifically the fact that it didn't capture exceptions that occurred on the binding thread. This caused the thread to crash the service.
  - The root cause of the error was when you get a connection error during init of the SmoMetadataProvider which threw an exception. Because of this no Binder was created, and the code would null ref later during processing
  - Added logic to handle null ref issue and other related code
  - Added a unit test for the new error handling path, and supported still returning some value in this case
- Separately, have a fix for an issue where the edition is shown as "SQL Azure" for all Azure connections. Fixing to be "Azure SQL DB" for this case and handle when the database reports as DW or Stretch instead. This maps better to users concept of what the edition should be and avoids returning what is an outdated term.

* Messed up the test - fixing this by returning the expected return object
2017-10-19 10:42:26 -07:00
Karl Burtram
4945aead96 Increase parsing thread stack size to avoid stack overflow (#486)
* Increase parsing thread stack size to avoid stack overflow

* Fix extra space

* Remove extra spaces
2017-10-10 16:33:04 -07:00
Leila Lali
fecf56bce2 closing the default connections that are opned just for validating the connections. Added the feature to application name in the connection (#483) 2017-10-09 10:49:12 -07:00
Praveen Barli
a8f3503c00 comment changes (#482) 2017-10-06 15:42:22 -07:00
Praveen Barli
8b86279c3d send empty response for non-ms sql peekdef calls (#480) 2017-10-06 15:32:11 -07:00
Leila Lali
f09b9f4c30 Fixing the bug with connections on database make restore fail (#473)
* closing the connections that don't need to be open and keeping track of the connections that should stay open
2017-10-05 20:06:31 -07:00
Karl Burtram
9091df8f62 Fix some issues with Script As Select (#474) 2017-10-03 14:39:29 -07:00
Kevin Cunnane
01d7cde0e3 Add support for Dedicated Administrator Connection (#466)
* Prototype support for admin connection

* Added test and used correct default for ADMIN connection casing
2017-09-20 16:04:12 -07:00
Matt Irvine
a35cd8ed2b Take column into account when getting current statement query (#458) 2017-09-19 16:51:24 -07:00
Karl Burtram
84ea045572 XEvent Profiler initial event handlers (#456)
* Bump SMO to 140.2.5 to pick-up private XEvent binaries

* Pick up SMO binaries from the build lab

* Add ProfilerService class placeholder

* Update SMO nuget package to include DB Scoped XEvents

* Stage changes

* Stage changes

* Update SMO to use RTM dependencies and remove separate SqlScript package

* Stage changes

* Iterate on profiler service

* Fix post-merge break in localization

* More refactoring

* Continue iterating on profiler

* Add test profiler listener

* Address a couple of the code review feedback

* Fix AppVeyor build break

* Use self-cleaning test file
2017-09-12 14:08:50 -07:00
Kevin Cunnane
774a777db2 Skip formatting if the language flavor shows this is not an MSSQL doc (#445) 2017-08-28 17:38:14 -07:00
Leila Lali
1511f73672 fixed the issue with resources not disposed correctly (#439)
* fixed the issue with resources not disposed correctly

* disposing language service at shutdown
2017-08-21 14:32:48 -07:00
Leila Lali
e1395cbd7d Adding more features to restore operation (#420)
* Adding more features to restore operations and added tests
2017-07-24 09:41:32 -07:00
Karl Burtram
cfa78bbc3b Execute SQL statement at cursor location (#412)
* Stage changes to other machine

* Parse sql statement from script document

* Fix a few typos and minor changes

* Fix bug
2017-07-13 20:33:05 -07:00
Karl Burtram
005fc9e4df Add try/catch blocks for request handlers (#408)
* Add try/catch for request handlers

* Fix test break
2017-07-13 07:18:34 -07:00
Kevin Cunnane
3aba287759 Fix #911 handle perforce files (#400)
- Additional handling of document events with "perforce:" or other SCM strings
- Much of the handling had been added already, but adding in additional validation and ensuring that everywhere `Workspace.GetFile` is called we add a not-null check to avoid null reference errors
2017-07-05 13:25:05 -07:00
Kevin Cunnane
81d031d5eb LanguageService must send result or intellisense hangs (#395)
* LanguageService must send result or intellisense hangs
- Unless the language services methods return results for requests, the VSCode language service protocol will never send a response up to its higher-level code. This means with intellisense off, it appears to hang instead of saying "No results found". This is clearly sub-optimal and if any other extension wants to provide SQL suggestions, it would break them from sending results
- Minor refactor to fully remove Instance-field references in the code
2017-06-23 13:36:43 -07:00
Kevin Cunnane
869cd1439f Add LanguageFlavorNotification handling and refactor LanguageService (#375)
* Add LanguageFlavorNotification handling and refactor LanguageService
- Added new notification handler for language flavor changed
- Refactored the LanguageService so that it no longer relies on so many intertwined static calls, which meant it was impossible to test without modifying the static instance. This will help with test reliability in the future, and prep for replacing the instance with a service provider.

* Skip if not an MSSQL doc and add test

* Handle definition requests

* Fix diagnostics handling
2017-06-12 13:28:24 -07:00
Kevin Cunnane
a4c630d5d3 Avoid throwing exception in LangageService for OE connections (#361)
* Ensure connection open for OE queries and fix connection disposal
- Dispose connection in Metadata service, to ensure we cleanly dispose and don't rely on garbage colleciton
- Fixed issue where if the connection was closed, expanding databases in the Server would fail. This is because SMO doesn't always reopen the connection, certainly not for Server level queries. The solution is to always check if open and reopen.
- Added unit tests for this, which required mocking the relevant IsOpen / OpenConnection methods. Refactored SMO wrapper calls into a dedicated class file to handle this

* Avoid throwing exception in LangageService for OE connections
- Handle non-File URIs by skipping language service binding in those cases. Added test for this

- VSCode passes untitled:, git: and other paths, often without a '/'. Updated logic to handle this.

* Handle windows file paths
2017-05-26 13:11:26 -07:00
Karl Burtram
b26b7674b3 Add EXCEPT to default keyword completion list (#349) 2017-05-12 22:54:55 -07:00
Benjamin Russell
2eb60f45c9 Send Error Object on SendError (#304)
This change ensures that when calling `requestContext.SendError` you are only able to supply parameters that match the language service beta protocol expected Error object. In other words, you have to provide an error message and optionally and error code.

# **BREAKING API CHANGES**
This will break displaying errors in Microsoft/vscode-mssql. I will be making changes to properly handle the error object shortly.

* Adding contract for returning Error objects as per LanguageService "protocol"

* Fixes throughout codebase to send only error message in error cases
Cleanup of CredentialServiceTest unit test class
Adding standard error handling for event flow validator

* Adding optional data field as per protocol spec
https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md

* Adding optional validation for error objects
2017-04-05 14:47:37 -07:00
Aditya Bist
9e8e1df95e fixed peek definition tokenizing (#281)
* fixed peek definition tokenizing

* fixed signature help test

* added new heuristic for PeekDefinition behaviour

* added tests for new heuristic

* fixed code according to Kevin's CR

* fixed failing test due to shared connection

* changed uri for procedure test
2017-03-23 13:19:59 -07:00
Karl Burtram
addad29b7c Add Scripter class and use it in the ScriptingService (#286)
* Initial scripting commit

* Fix the script CREATE integration test

* Use language service binding queue for scripting

* Update scripting service to have methods for each operation

* Add scripter class

* Fix build break.

* Fix a few bugs

* Use scripter class instead of PeekDefinition class.

* Fix scripting test break

* Fix header incorrectly saying file is generated.

* Add localization tests to address a large block of code not covered by automation.

* Moving system usings to top of using list
2017-03-21 13:18:52 -07:00
Karl Burtram
8f3e83b519 Add nvarchar to IntelliSense keyword list (#272) 2017-03-09 14:33:43 -08:00
Kevin Cunnane
adcc5c8089 Merge latest Dev and latest master 2017-03-06 17:59:41 -08:00
Kevin Cunnane
0f706f28ee Merge from Master 2017-03-06 17:56:04 -08:00
Benjamin Russell
ef3100de3b Changing test projects to UnitTests, fixing peek definition codegen bug (#269) 2017-03-06 17:55:48 -08:00
Karl Burtram
f00136cffb Fix namespaces for code moved to separate class libraries (#263)
* Create ServiceHost a service-specific class

* Renaming hosting namespace

* Rename credentials namespace

* Fix namespaces
2017-03-02 14:41:06 -08:00
Karl Burtram
213de5cc12 Don't crash when refreshing IntelliSense cache disconnected (#260)
* Prevent null ref exception in refresh cache handler

* Send refresh complete event when disconnected

* Wrap handler in global try/catch
2017-02-28 23:46:02 -08:00
Karl Burtram
0d99b36cc1 Don't crash when refreshing IntelliSense cache disconnected (#260)
* Prevent null ref exception in refresh cache handler

* Send refresh complete event when disconnected

* Wrap handler in global try/catch
2017-02-28 16:15:11 -08:00