X Tutup
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Threading.Tasks; using Npgsql.PostgresTypes; using Npgsql.Util; using NpgsqlTypes; namespace Npgsql { class PostgresMinimalDatabaseInfoFactory : INpgsqlDatabaseInfoFactory { public Task Load(NpgsqlConnection conn, NpgsqlTimeout timeout, bool async) => Task.FromResult( new NpgsqlConnectionStringBuilder(conn.ConnectionString).ServerCompatibilityMode == ServerCompatibilityMode.NoTypeLoading ? (NpgsqlDatabaseInfo)new PostgresMinimalDatabaseInfo(conn) : null ); } class PostgresMinimalDatabaseInfo : PostgresDatabaseInfo { static readonly Version DefaultVersion = new Version(10, 0); static readonly PostgresBaseType[] Types = typeof(NpgsqlDbType).GetFields() .Select(f => f.GetCustomAttribute()) .OfType() .Select(a => new PostgresBaseType("pg_catalog", a.Name, a.OID)) .ToArray(); protected override IEnumerable GetTypes() => Types; internal PostgresMinimalDatabaseInfo(NpgsqlConnection conn) : base(conn) { HasIntegerDateTimes = !conn.PostgresParameters.TryGetValue("integer_datetimes", out var intDateTimes) || intDateTimes == "on"; } } }
X Tutup