I ran your code with my test file and I get this...which is perfectly correct.
Do you get something different? What makes you think the stream is truncated
in the database?
Also...change SQLITE_STATIC to SQLITE_TRANSIENT...that could be your culprit if
you are still seeing truncation.
Plus "rb" is a Windows thing...not Unix...Windows treats fopen() files as text
by default and Windows puts CTRL-Z at the end of text files so the "rb" is
necessary to remove that. Unix does no such stupid thing.
This is redundant as the strcpy() in front of ti already puts a nul after the
string.
msg_in.tid[36] = '\0';
<PETPEEVE>
Rather than
printf("Cannot open file2\n");
Please use
perror("in.txt");
I always kicked my students for not using REAL error messages that actually
tell you what went wrong.
</PETPEEVE>
ls -l in.txt
-rw-r--r-- 1 mblack users 10 Apr 3 08:03 in.txt
od -xa in.txt
0000000 4241 4400 4645 4847 4a49
A B nul D E F G H I J
0000012
SQLite version 3.7.5
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select length(raw_stream_in) from queue;
10
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE [queue] ( [idx] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [tid]
CHAR(24) NOT NULL, [raw_stream_in] BLOB, [num_bytes_in] INTEGER
[raw_stream_out] BLOB, [num_bytes_out] INTEGER [timestamp] CHAR(20));
INSERT INTO "queue" VALUES(1,'123',X'4142004445464748494A',10,NULL);
DELETE FROM sqlite_sequence;
INSERT INTO "sqlite_sequence" VALUES('queue',1);
CREATE UNIQUE INDEX tid on queue([tid]);
COMMIT;
Michael D. Black
Senior Scientist
NG Information Systems
Advanced Analytics Directorate
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users