[Error 1178] [SQLState HY000] The Teradata Database did not provide the expected response

Symptômes

[Teradata JDBC Driver] [TeraJDBC 15.00.00.15] [Error 1178] [SQLState HY000] The Teradata Database did not provide the expected response - unable to read 8224 byte(s) from the database. Only 209814 byte(s) were received from the database and 202217 byte(s) have already been read. 

Le problème se pose à l’exécution d’une requête bête :

select * from table_truc where the_date between ? and ?

sachant que ça fonctionne très bien sur la plus-part des table mais pas sur l’une d’elles ??

Solution

En fait, la table contenait un champ de type Structured UDT formé comme suit :

CREATE TYPE SYSUDTLIB.AddAttribute_Type  AS CHAR(24) CHARACTER SET LATIN ARRAY [10] DEFAULT NULL ;

C’est ça qui causait le souci. En supprimant ce champ de la close SELECT, la requête re-fonctionne très bien.

Reste à savoir comment on sélectionne ce type de champ.

Edit 2015-04-08:
J’avais oublié de mettre à jour, en fait un bug dans les driver JDBC interdit de faire un select de champ tableau si ce dernier est pas à la fin du select. Donc lors d’un select il faut trier les champs UDT et les mettre à la fin du select. Cela fonctionne aussi avec plusieurs champs UDT.