Esempio n. 1
0
File: Bind.cs Progetto: ikvm/ravendb
        protected override async Task HandleMessage(PgTransaction transaction, MessageBuilder messageBuilder, PipeWriter writer, CancellationToken token)
        {
            // TODO: Maybe support named statements/portals
            if (!string.IsNullOrEmpty(StatementName) || !string.IsNullOrEmpty(PortalName))
            {
                throw new PgErrorException(PgErrorCodes.FeatureNotSupported,
                                           "Named statements/portals are not supported.");
            }

            if (ParameterFormatCodes.Length != Parameters.Count &&
                ParameterFormatCodes.Length != 0 &&
                ParameterFormatCodes.Length != 1)
            {
                throw new PgErrorException(PgErrorCodes.ProtocolViolation,
                                           $"Parameter format code amount is {ParameterFormatCodes.Length} when expected " +
                                           $"to be 0, 1 or equal to the parameters count {Parameters.Count}.");
            }

            transaction.Bind(Parameters, ParameterFormatCodes, ResultColumnFormatCodes);
            await writer.WriteAsync(messageBuilder.BindComplete(), token);
        }