This is how the array is formed in my C code
-------------------------------------------------------------------------------------------
FILE *fp;
while(!feof(fp))
{ch[i]=fgetc(fp);
if(ch[i]=='\n') lines++; i++; }
ch[i-1]='\0';
fclose(fp);
------------------------------------------------------------------------------
{ch[i]=fgetc(fp);
if(ch[i]=='\n') lines++; i++; }
ch[i-1]='\0';
fclose(fp);
------------------------------------------------------------------------------
and then am inserting ch as a whole in the varchar column in the database.
Do you want me to append a leading '{' and a trailing '}' to ch??
~Jas
On 8/16/06, Michael Fuhr <mike@xxxxxxxx> wrote:
On Wed, Aug 16, 2006 at 12:38:42AM -0400, Jasbinder Bali wrote:
> table definition of raw_email table is as follows
>
> CREATE TABLE raw_email (
> id int4 NOT NULL,
> raw_email varchar[],
> parsed_flag bool NOT NULL DEFAULT false,
> CONSTRAINT pk_rawemail PRIMARY KEY (id)
> )
> WITHOUT OIDS;
>
> i have very much declared raw_email field as varchar and not char
It's not the varchar-vs-char distinction that matters; it's the
fact that raw_email is declared as array, so it expects a certain
input syntax. Example:
test=> INSERT INTO raw_email (id, raw_email) VALUES (1, 'test');
ERROR: array value must start with "{" or dimension information
test=> INSERT INTO raw_email (id, raw_email) VALUES (1, '{test}');
INSERT 0 1
Are you sure you want raw_email to be an array instead of a simple
varchar column? Are you handling the contents as array elements
(e.g., one element per line) or is the whole considered a single
piece of data?
--
Michael Fuhr