message: master: better error handling
diff: @@ -7,21 +7,37 @@ import SQLTools from '@sqltools/core/plugin-api';
  import { numericVersion } from '.';
  const IGNORE_ERRORS_REGEX = new RegExp(`(${[
  - 'ENOTFOUND',
  - 'ENOTFOUND',
  - 'ECONNREFUSED',
  - 'ER_CANNOT_LOAD_FROM_TABLE_V2',
  - 'ER_ACCESS_DENIED_ERROR',
  + 'aggregate function',
  + 'already exists',
  + 'authentication failed',
  + 'cannot drop',
  + 'cross-database references',
  'does not exist',
  - 'ER_PARSE_ERROR',
  - 'ER_BAD_FIELD_ERROR',
  - 'ER_BAD_DB_ERROR',
  - 'ER_NO_SUCH_TABLE',
  - 'SQLITE_CANTOPEN',
  + 'econnrefused',
  + 'econnreset',
  + 'enotfound',
  + 'enotfound',
  + 'er_access_denied_error',
  + 'er_bad_db_error',
  + 'er_bad_field_error',
  + 'er_cannot_load_from_table_v2',
  + 'er_dup_fieldname',
  + 'er_no_referenced_row_2',
  + 'er_no_such_table',
  + 'er_not_supported_auth_mode',
  + 'er_parse_error',
  + 'etimedout',
  + 'failed to connect',
  + 'is ambiguous',
  + 'key constraint',
  + 'login failed',
  + 'no such table',
  + 'ora-[0-9]+',
  + 'sqlite_cantopen',
  'syntax error',
  - 'already exists',
  - 'ECONNRESET'
  -].join('|')})`, 'gi');
  + 'unknown_code_please_report',
  + 'violates',
  +].join('|')})`, 'g');
  export class Telemetry implements SQLTools.TelemetryInterface {
  public static SeveriryLevel = AI.Contracts.SeverityLevel;
  @@ -130,7 +146,7 @@ export class Telemetry implements SQLTools.TelemetryInterface {
  @runIfPropIsDefined('client')
  public registerException(error: Error, data: { [key: string]: any } = {}) {
  if (!error) return;
  - const errStr = (error && error.message ? error.message : '').toLocaleLowerCase();
  + const errStr = (error && error.message ? error.message : '').toLowerCase();
  if (IGNORE_ERRORS_REGEX.test(errStr)) return;
  this.sendException(error, { ...((<any>error).data || {}), ...data });
  