internal async Task <CachedProcedure> GetCachedProcedure(IOBehavior ioBehavior, string name, CancellationToken cancellationToken)
        {
            if (State != ConnectionState.Open)
            {
                throw new InvalidOperationException("Connection is not open.");
            }

            if (m_session.ServerVersion.Version < ServerVersions.SupportsProcedureCache)
            {
                return(null);
            }

            if (m_cachedProcedures == null)
            {
                m_cachedProcedures = new Dictionary <string, CachedProcedure>();
            }

            var             normalized = NormalizedSchema.MustNormalize(name, Database);
            CachedProcedure cachedProcedure;

            if (!m_cachedProcedures.TryGetValue(normalized.FullyQualified, out cachedProcedure))
            {
                cachedProcedure = await CachedProcedure.FillAsync(ioBehavior, this, normalized.Schema, normalized.Component, cancellationToken).ConfigureAwait(false);

                m_cachedProcedures[normalized.FullyQualified] = cachedProcedure;
            }
            return(cachedProcedure);
        }
Esempio n. 2
0
        public void ParseParameters(string sql, object[] expected)
        {
            var actual = CachedProcedure.ParseParameters(sql);

            Assert.Equal(expected.Length, actual.Count);
            for (int i = 0; i < expected.Length; i++)
            {
                var expectedParameter = (CachedParameter)expected[i];
                var actualParameter   = actual[i];
                Assert.Equal(expectedParameter.Position, actualParameter.Position);
                Assert.Equal(expectedParameter.Direction, actualParameter.Direction);
                Assert.Equal(expectedParameter.Name, actualParameter.Name);
                Assert.Equal(expectedParameter.MySqlDbType, actualParameter.MySqlDbType);
            }
        }
Esempio n. 3
0
        public void ParseDataType(string sql, string expectedDataType, bool expectedUnsigned, int expectedLength)
        {
            var dataType = CachedProcedure.ParseDataType(sql, out var unsigned, out var length);

            Assert.Equal((expectedDataType, expectedUnsigned, expectedLength), (dataType, unsigned, length));
        }