Fixed length binary columns in user defined table types fail when constructed

Ouverte
#413 9 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
fsharp, sql
Domaine
databases

Piste de recherche

Commencez par lire src/SqlClient.DesignTime/DesignTime.fs autour de la ligne 544 et reproduisez le type de table personnalisé fourni à l’aide d’une colonne binary(16). Ajoutez un test unitaire de régression pour construire la valeur du type de table généré, puis vérifiez qu’il s’exécute jusqu’à son terme sans l’exception du constructeur SqlMetaData signalée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug
Issue Summary

When using a user defined table type with a fixed length binary column the wrong constructor for SqlMetaData is used resulting in the following exception.

System.ArgumentException: 'The dbType Binary is invalid for this constructor.'

This line looks like it's causing the issue, which incorrectly assumes if it is a fixed length that it can safely use the two parameter constructor:

https://github.com/fsprojects/FSharp.Data.SqlClient/blob/0bc5129586512316570da1f27e588287d7e8be35/src/SqlClient.DesignTime/DesignTime.fs#L544

To Reproduce
  1. Create a custom table type
CREATE TYPE [dbo].[CustomTableType] AS TABLE(
	[Value] [binary](16)
)
  1. Use the type in a query
type StaticProvider =
    SqlCommandProvider<"
        Declare @Updates as CustomTableType = @Inputs;
    " , staticConnectionString>

use cmd = new StaticProvider(context.connection, transaction = context.transaction)
cmd.AsyncExecute(
    data.inputs
    |> List.map(fun x ->
        StaticProvider.CustomTableType( // <--- Error in constructor
            Value = x.value
        )
    )
Error
System.ArgumentException: 'The dbType Binary is invalid for this constructor.'
Expected behavior

There should not be an error in this case.

What you can do
  • I am willing to contribute a PR with a unit test showcasing the issue
  • I am willing to test the bug fix before next release
Langage dominant
F#
Étoiles
206
Forks
65
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de fsprojects/FSharp.Data.SqlClient

Toutes les issues de fsprojects/FSharp.Data.SqlClient

Issues similaires

Plus d'issues Databases

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.