Esempio n. 1
0
        internal FakeTopologyService(ICollection <MemberId> cores, ICollection <MemberId> replicas, MemberId myself, RoleInfo myselfRole)
        {
            this._myself = myself;
            _clusterId   = new ClusterId(System.Guid.randomUUID());
            _roles       = new Dictionary <MemberId, RoleInfo>();
            _coreMembers = new Dictionary <MemberId, CoreServerInfo>();

            foreach (MemberId coreMemberId in cores)
            {
                CoreServerInfo coreServerInfo = coreServerInfo(_dbName);
                _coreMembers[coreMemberId] = coreServerInfo;
                _roles[coreMemberId]       = RoleInfo.FOLLOWER;
            }

            _replicaMembers = new Dictionary <MemberId, ReadReplicaInfo>();
            foreach (MemberId replicaMemberId in replicas)
            {
                ReadReplicaInfo readReplicaInfo = readReplicaInfo(_dbName);
                _replicaMembers[replicaMemberId] = readReplicaInfo;
                _roles[replicaMemberId]          = RoleInfo.READ_REPLICA;
            }

            if (RoleInfo.READ_REPLICA.Equals(myselfRole))
            {
                _replicaMembers[myself] = ReadReplicaInfo(_dbName);
                _roles[myself]          = RoleInfo.READ_REPLICA;
            }
            else
            {
                _coreMembers[myself] = CoreServerInfo(_dbName);
                _roles[myself]       = RoleInfo.FOLLOWER;
            }
            _roles[myself] = myselfRole;
        }
Esempio n. 2
0
        private static SqlDriver CreateDriverInstance(string connectionString, bool isAzure, Version version,
                                                      DefaultSchemaInfo defaultSchema, ErrorMessageParser parser, bool isEnsureAlive)
        {
            var builder        = new SqlConnectionStringBuilder(connectionString);
            var coreServerInfo = new CoreServerInfo {
                ServerVersion            = version,
                ConnectionString         = connectionString,
                MultipleActiveResultSets = builder.MultipleActiveResultSets,
                DatabaseName             = defaultSchema.Database,
                DefaultSchemaName        = defaultSchema.Schema,
            };

            if (isAzure)
            {
                return(new Azure.Driver(coreServerInfo, parser, isEnsureAlive));
            }

            if (version.Major < 9)
            {
                throw new NotSupportedException(Strings.ExSqlServerBelow2005IsNotSupported);
            }
            return(version.Major switch {
                9 => new v09.Driver(coreServerInfo, parser, isEnsureAlive),
                10 => new v10.Driver(coreServerInfo, parser, isEnsureAlive),
                11 => new v11.Driver(coreServerInfo, parser, isEnsureAlive),
                12 => new v12.Driver(coreServerInfo, parser, isEnsureAlive),
                13 => new v13.Driver(coreServerInfo, parser, isEnsureAlive),
                _ => new v13.Driver(coreServerInfo, parser, isEnsureAlive)
            });
Esempio n. 3
0
        /// <inheritdoc/>
        protected override SqlDriver CreateDriver(string connectionString, SqlDriverConfiguration configuration)
        {
            using (var connection = new FbConnection(connectionString)) {
                connection.Open();
                SqlHelper.ExecuteInitializationSql(connection, configuration);
                var dataSource     = new FbConnectionStringBuilder(connectionString).DataSource;
                var defaultSchema  = GetDefaultSchema(connection);
                var coreServerInfo = new CoreServerInfo {
                    ServerVersion            = GetVersionFromServerVersionString(connection.ServerVersion),
                    ConnectionString         = connectionString,
                    MultipleActiveResultSets = true,
                    DatabaseName             = defaultSchema.Database,
                    DefaultSchemaName        = defaultSchema.Schema,
                };

                if (Int32.Parse(coreServerInfo.ServerVersion.Major.ToString() + coreServerInfo.ServerVersion.Minor.ToString()) < 25)
                {
                    throw new NotSupportedException(Strings.ExFirebirdBelow25IsNotSupported);
                }
                if (coreServerInfo.ServerVersion.Major == 2 && coreServerInfo.ServerVersion.Minor == 5)
                {
                    return(new v2_5.Driver(coreServerInfo));
                }
                return(null);
            }
        }
Esempio n. 4
0
 /// <inheritdoc/>
 protected override SqlDriver CreateDriver(string connectionString, SqlDriverConfiguration configuration)
 {
     using (var connection = new OracleConnection(connectionString)) {
         connection.Open();
         SqlHelper.ExecuteInitializationSql(connection, configuration);
         var version = string.IsNullOrEmpty(configuration.ForcedServerVersion)
   ? ParseVersion(connection.ServerVersion)
   : new Version(configuration.ForcedServerVersion);
         var dataSource     = new OracleConnectionStringBuilder(connectionString).DataSource;
         var defaultSchema  = GetDefaultSchema(connection);
         var coreServerInfo = new CoreServerInfo {
             ServerVersion            = version,
             ConnectionString         = connectionString,
             MultipleActiveResultSets = true,
             DatabaseName             = defaultSchema.Database,
             DefaultSchemaName        = defaultSchema.Schema,
         };
         if (version.Major < 9 || version.Major == 9 && version.Minor < 2)
         {
             throw new NotSupportedException(Strings.ExOracleBelow9i2IsNotSupported);
         }
         if (version.Major == 9)
         {
             return(new v09.Driver(coreServerInfo));
         }
         if (version.Major == 10)
         {
             return(new v10.Driver(coreServerInfo));
         }
         return(new v11.Driver(coreServerInfo));
     }
 }
Esempio n. 5
0
        private static SqlDriver CreateDriverInstance(
            string connectionString, Version version, DefaultSchemaInfo defaultSchema)
        {
            var coreServerInfo = new CoreServerInfo {
                ServerVersion            = version,
                ConnectionString         = connectionString,
                MultipleActiveResultSets = false,
                DatabaseName             = defaultSchema.Database,
                DefaultSchemaName        = defaultSchema.Schema,
            };

            if (version.Major < 8 || (version.Major == 8 && version.Minor < 3))
            {
                throw new NotSupportedException(Strings.ExPostgreSqlBelow83IsNotSupported);
            }

            // We support 8.3, 8.4 and any 9.0+

            if (version.Major == 8)
            {
                return(version.Minor == 3 ? new v8_3.Driver(coreServerInfo) : new v8_4.Driver(coreServerInfo));
            }

            if (version.Major == 9)
            {
                return(version.Minor == 0 ? new v9_0.Driver(coreServerInfo) : new v9_1.Driver(coreServerInfo));
            }

            if (version.Major < 12)
            {
                return(new v10_0.Driver(coreServerInfo));
            }

            return(new v12_0.Driver(coreServerInfo));
        }
Esempio n. 6
0
        private IDictionary <MemberId, CoreServerInfo> MapOf(MemberId memberId, CoreServerInfo coreServerInfo)
        {
            Dictionary <MemberId, CoreServerInfo> map = new Dictionary <MemberId, CoreServerInfo>();

            map[memberId] = coreServerInfo;

            return(map);
        }
Esempio n. 7
0
        protected override SqlDriver CreateDriver(string connectionString, SqlDriverConfiguration configuration)
        {
            using (var connection = new NpgsqlConnection(connectionString)) {
                connection.Open();
                SqlHelper.ExecuteInitializationSql(connection, configuration);
                var version = string.IsNullOrEmpty(configuration.ForcedServerVersion)
          ? connection.PostgreSqlVersion
          : new Version(configuration.ForcedServerVersion);
                var builder        = new NpgsqlConnectionStringBuilder(connectionString);
                var dataSource     = string.Format(DataSourceFormat, builder.Host, builder.Port, builder.Database);
                var defaultSchema  = GetDefaultSchema(connection);
                var coreServerInfo = new CoreServerInfo {
                    ServerVersion            = version,
                    ConnectionString         = connectionString,
                    MultipleActiveResultSets = false,
                    DatabaseName             = defaultSchema.Database,
                    DefaultSchemaName        = defaultSchema.Schema,
                };

                if (version.Major < 8 || version.Major == 8 && version.Minor < 3)
                {
                    throw new NotSupportedException(Strings.ExPostgreSqlBelow83IsNotSupported);
                }

                // We support 8.3, 8.4 and any 9.0+

                if (version.Major == 8)
                {
                    if (version.Minor == 3)
                    {
                        return(new v8_3.Driver(coreServerInfo));
                    }
                    return(new v8_4.Driver(coreServerInfo));
                }

                if (version.Major == 9)
                {
                    if (version.Minor == 0)
                    {
                        return(new v9_0.Driver(coreServerInfo));
                    }
                    return(new v9_1.Driver(coreServerInfo));
                }

                return(new v10_0.Driver(coreServerInfo));
            }
        }
Esempio n. 8
0
        private static SqlDriver CreateDriverInstance(string connectionString, Version version,
                                                      DefaultSchemaInfo defaultSchema)
        {
            var coreServerInfo = new CoreServerInfo {
                ServerVersion            = version,
                ConnectionString         = connectionString,
                MultipleActiveResultSets = false,
                DatabaseName             = defaultSchema.Database,
                DefaultSchemaName        = defaultSchema.Schema,
            };

            if (version.Major < 3)
            {
                throw new NotSupportedException(Strings.ExSqlLiteServerBelow3IsNotSupported);
            }

            return(new v3.Driver(coreServerInfo));
        }
Esempio n. 9
0
        protected override SqlDriver CreateDriver(string connectionString, SqlDriverConfiguration configuration)
        {
            using (var connection = new MySqlConnection(connectionString)) {
                connection.Open();
                SqlHelper.ExecuteInitializationSql(connection, configuration);
                var versionString = string.IsNullOrEmpty(configuration.ForcedServerVersion)
          ? connection.ServerVersion
          : configuration.ForcedServerVersion;
                var version = ParseVersion(versionString);

                var builder        = new MySqlConnectionStringBuilder(connectionString);
                var dataSource     = string.Format(DataSourceFormat, builder.Server, builder.Port, builder.Database);
                var defaultSchema  = GetDefaultSchema(connection);
                var coreServerInfo = new CoreServerInfo {
                    ServerVersion            = version,
                    ConnectionString         = connectionString,
                    MultipleActiveResultSets = false,
                    DatabaseName             = defaultSchema.Database,
                    DefaultSchemaName        = defaultSchema.Schema,
                };

                if (version.Major < 5)
                {
                    throw new NotSupportedException(Strings.ExMySqlBelow50IsNotSupported);
                }
                if (version.Major == 5 && version.Minor == 0)
                {
                    return(new v5_0.Driver(coreServerInfo));
                }
                if (version.Major == 5 && version.Minor == 1)
                {
                    return(new v5_1.Driver(coreServerInfo));
                }
                if (version.Major == 5 && version.Minor == 5)
                {
                    return(new v5_5.Driver(coreServerInfo));
                }
                if (version.Major == 5 && version.Minor == 6)
                {
                    return(new v5_6.Driver(coreServerInfo));
                }
                return(new v5_6.Driver(coreServerInfo));
            }
        }
Esempio n. 10
0
        private static SqlDriver CreateDriverInstance(string connectionString, Version version, DefaultSchemaInfo defaultSchema)
        {
            var coreServerInfo = new CoreServerInfo {
                ServerVersion            = version,
                ConnectionString         = connectionString,
                MultipleActiveResultSets = true,
                DatabaseName             = defaultSchema.Database,
                DefaultSchemaName        = defaultSchema.Schema,
            };

            if (version.Major < 9 || (version.Major == 9 && version.Minor < 2))
            {
                throw new NotSupportedException(Strings.ExOracleBelow9i2IsNotSupported);
            }

            return(version.Major switch {
                9 => new v09.Driver(coreServerInfo),
                10 => new v10.Driver(coreServerInfo),
                _ => new v11.Driver(coreServerInfo)
            });
Esempio n. 11
0
        private static SqlDriver CreateDriverInstance(string connectionString, Version version, DefaultSchemaInfo defaultSchema)
        {
            var coreServerInfo = new CoreServerInfo {
                ServerVersion            = version,
                ConnectionString         = connectionString,
                MultipleActiveResultSets = false,
                DatabaseName             = defaultSchema.Database,
                DefaultSchemaName        = defaultSchema.Schema,
            };

            if (version.Major < 5)
            {
                throw new NotSupportedException(Strings.ExMySqlBelow50IsNotSupported);
            }

            return(version.Major switch {
                5 when version.Minor == 0 => new v5_0.Driver(coreServerInfo),
                5 when version.Minor == 1 => new v5_1.Driver(coreServerInfo),
                5 when version.Minor == 5 => new v5_5.Driver(coreServerInfo),
                5 when version.Minor == 6 => new v5_6.Driver(coreServerInfo),
                _ => new v5_6.Driver(coreServerInfo)
            });
Esempio n. 12
0
        private SqlDriver DoCreateDriver(string connectionString, SqlDriverConfiguration configuration)
        {
            using (var connection = new SQLiteConnection(connectionString)) {
                connection.Open();
                SqlHelper.ExecuteInitializationSql(connection, configuration);
                var version        = new Version(connection.ServerVersion);
                var defaultSchema  = GetDefaultSchema(connection);
                var coreServerInfo = new CoreServerInfo {
                    ServerVersion            = version,
                    ConnectionString         = connectionString,
                    MultipleActiveResultSets = false,
                    DatabaseName             = defaultSchema.Database,
                    DefaultSchemaName        = defaultSchema.Schema,
                };

                if (version.Major < 3)
                {
                    throw new NotSupportedException(Strings.ExSqlLiteServerBelow3IsNotSupported);
                }
                return(new v3.Driver(coreServerInfo));
            }
        }
Esempio n. 13
0
        private static SqlDriver CreateDriverInstance(
            string connectionString, Version version, DefaultSchemaInfo defaultSchema)
        {
            var coreServerInfo = new CoreServerInfo {
                ServerVersion            = version,
                ConnectionString         = connectionString,
                MultipleActiveResultSets = true,
                DatabaseName             = defaultSchema.Database,
                DefaultSchemaName        = defaultSchema.Schema,
            };

            if (coreServerInfo.ServerVersion < new Version(2, 5))
            {
                throw new NotSupportedException(Strings.ExFirebirdBelow25IsNotSupported);
            }

            if (coreServerInfo.ServerVersion.Major == 2 && coreServerInfo.ServerVersion.Minor == 5)
            {
                return(new v2_5.Driver(coreServerInfo));
            }

            return(null);
        }
Esempio n. 14
0
        public override RawIterator <object[], ProcedureException> Apply(Context ctx, object[] input, ResourceTracker resourceTracker)
        {
            IDictionary <MemberId, RoleInfo> roleMap   = _topologyService.allCoreRoles();
            IList <ReadWriteEndPoint>        endpoints = new List <ReadWriteEndPoint>();

            CoreTopology    coreTopology = _topologyService.allCoreServers();
            ISet <MemberId> coreMembers  = coreTopology.Members().Keys;

            foreach (MemberId memberId in coreMembers)
            {
                Optional <CoreServerInfo> coreServerInfo = coreTopology.find(memberId);
                if (coreServerInfo.Present)
                {
                    CoreServerInfo info = coreServerInfo.get();
                    RoleInfo       role = roleMap.getOrDefault(memberId, RoleInfo.UNKNOWN);
                    endpoints.Add(new ReadWriteEndPoint(info.Connectors(), role, memberId.Uuid, new IList <string> {
                        info.Groups()
                    }, info.DatabaseName));
                }
                else
                {
                    _log.debug("No Address found for " + memberId);
                }
            }

            foreach (KeyValuePair <MemberId, ReadReplicaInfo> readReplica in _topologyService.allReadReplicas().members().SetOfKeyValuePairs())
            {
                ReadReplicaInfo readReplicaInfo = readReplica.Value;
                endpoints.Add(new ReadWriteEndPoint(readReplicaInfo.Connectors(), RoleInfo.READ_REPLICA, readReplica.Key.Uuid, new IList <string> {
                    readReplicaInfo.Groups()
                }, readReplicaInfo.DatabaseName));
            }

            endpoints.sort(comparing(o => o.addresses().ToString()));

            return(map(endpoint => new object[] { endpoint.memberId().ToString(), endpoint.addresses().uriList().Select(URI.toString).ToList(), endpoint.role().name(), endpoint.groups(), endpoint.dbName() }, asRawIterator(endpoints.GetEnumerator())));
        }
Esempio n. 15
0
 public Driver(CoreServerInfo coreServerInfo) : base(coreServerInfo)
 {
 }
Esempio n. 16
0
 protected SqlDriver(CoreServerInfo coreServerInfo)
 {
     coreServerInfo.Lock();
     CoreServerInfo = coreServerInfo;
 }
Esempio n. 17
0
        // Constructors

        protected Driver(CoreServerInfo coreServerInfo, ErrorMessageParser errorMessageParser, bool checkConnectionIsAlive)
            : base(coreServerInfo)
        {
            this.errorMessageParser     = errorMessageParser;
            this.checkConnectionIsAlive = checkConnectionIsAlive;
        }
Esempio n. 18
0
        // As far as SqlGeometry and SqlGeography have no support in .Net Standard
        // these two methods are useless

        //protected override void RegisterCustomMappings(TypeMappingRegistryBuilder builder)
        //{
        //  base.RegisterCustomMappings(builder);
        //  builder.Add(new GeometryMapper());
        //  builder.Add(new GeographyMapper());
        //}

        //protected override void RegisterCustomReverseMappings(TypeMappingRegistryBuilder builder)
        //{
        //  base.RegisterCustomReverseMappings(builder);

        //  builder.AddReverse(CustomSqlType.Geometry, Type.GetType("Microsoft.SqlServer.Types.SqlGeometry, Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"));
        //  builder.AddReverse(CustomSqlType.Geography, Type.GetType("Microsoft.SqlServer.Types.SqlGeography, Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"));
        //}

        // Constructors

        public Driver(CoreServerInfo coreServerInfo, ErrorMessageParser errorMessageParser, bool checkConnectionIsAlive)
            : base(coreServerInfo, errorMessageParser, checkConnectionIsAlive)
        {
        }
Esempio n. 19
0
        /// <inheritdoc/>
        protected override SqlDriver CreateDriver(string connectionString, SqlDriverConfiguration configuration)
        {
            var isPooingOn = !IsPoolingOff(connectionString);

            configuration.EnsureConnectionIsAlive = isPooingOn && configuration.EnsureConnectionIsAlive;

            using (var connection = CreateAndOpenConnection(connectionString, configuration)) {
                string versionString;
                bool   isAzure;

                var forcedServerVersion = configuration.ForcedServerVersion;
                if (string.IsNullOrEmpty(forcedServerVersion))
                {
                    versionString = connection.ServerVersion;
                    isAzure       = IsAzure(connection);
                }
                else if (forcedServerVersion.Equals("azure", StringComparison.OrdinalIgnoreCase))
                {
                    versionString = "10.0.0.0";
                    isAzure       = true;
                }
                else
                {
                    versionString = forcedServerVersion;
                    isAzure       = false;
                }

                var builder        = new SqlConnectionStringBuilder(connectionString);
                var version        = new Version(versionString);
                var defaultSchema  = GetDefaultSchema(connection);
                var coreServerInfo = new CoreServerInfo {
                    ServerVersion            = version,
                    ConnectionString         = connectionString,
                    MultipleActiveResultSets = builder.MultipleActiveResultSets,
                    DatabaseName             = defaultSchema.Database,
                    DefaultSchemaName        = defaultSchema.Schema,
                };
                if (isAzure)
                {
                    return(new Azure.Driver(coreServerInfo, new ErrorMessageParser(), configuration.EnsureConnectionIsAlive));
                }
                if (version.Major < 9)
                {
                    throw new NotSupportedException(Strings.ExSqlServerBelow2005IsNotSupported);
                }
                var parser = CreateMessageParser(connection);
                if (version.Major == 9)
                {
                    return(new v09.Driver(coreServerInfo, parser, configuration.EnsureConnectionIsAlive));
                }
                if (version.Major == 10)
                {
                    return(new v10.Driver(coreServerInfo, parser, configuration.EnsureConnectionIsAlive));
                }
                if (version.Major == 11)
                {
                    return(new v11.Driver(coreServerInfo, parser, configuration.EnsureConnectionIsAlive));
                }
                if (version.Major == 12)
                {
                    return(new v12.Driver(coreServerInfo, parser, configuration.EnsureConnectionIsAlive));
                }
                if (version.Major == 13)
                {
                    return(new v13.Driver(coreServerInfo, parser, configuration.EnsureConnectionIsAlive));
                }
                return(new v13.Driver(coreServerInfo, parser, configuration.EnsureConnectionIsAlive));
            }
        }
Esempio n. 20
0
        // Constructors

        protected Driver(CoreServerInfo coreServerInfo)
            : base(coreServerInfo)
        {
        }