Sixth param is longlong and is always 0:
4000000055d97d9d09ddb7fc006b3db79185: sql=INSERT INTO attachment 
(`piler_id`,`attachment_id`,`sig`,`name`,`type`,`size`,`ptr`) 
VALUES(?,?,?,?,?,?,?)
p_exec_query: param 0 - type 254 - length 36 - content 
4000000055d97d9d09ddb7fc006b3db79185
p_exec_query: param 1 - type 3 - length 0 - content 1
p_exec_query: param 2 - type 254 - length 64 - content 
0a2ae595399a2e82af7a7a65d737e54f1993f7f606119bd97a24874654ef10ac
p_exec_query: param 3 - type 254 - length 12 - content daticert.xml
p_exec_query: param 4 - type 254 - length 15 - content application/xml
p_exec_query: param 5 - type 3 - length 0 - content 809
p_exec_query: param 6 - type 8 - length 0 - content 0
4000000055d97d9d09ddb7fc006b3db79185: mysql_stmt_execute error: *Incorrect 
arguments to mysqld_stmt_execute* (errno: 1210)
I tried the insert by hand, no problem:
mysqlinsert into attachment 
(`piler_id`,`attachment_id`,`sig`,`name`,`type`,`size`,`ptr`) values
('4000000055d97d9d09ddb7fc006b3db79185',1,'0a2ae595399a2e82af7a7a65d737e54f1993f7f606119bd97a24874654ef10ac','daticert.xml','application/xml',809,0);
Query OK, 1 row affected (0.00 sec)
Here is the describe of my attachment table:
+---------------+---------------------+------+-----+---------+----------------+
| Field         | Type                | Null | Key | Default | Extra          |
+---------------+---------------------+------+-----+---------+----------------+
| id            | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| piler_id      | char(36)            | NO   | MUL | NULL    |                |
| attachment_id | int(11)             | NO   |     | NULL    |                |
| name          | varchar(128)        | YES  |     | NULL    |                |
| type          | varchar(128)        | YES  |     | NULL    |                |
| sig           | char(64)            | NO   | MUL | NULL    |                |
| size          | int(11)             | YES  |     | 0       |                |
| ptr           | bigint(20) unsigned | YES  | MUL | 0       |                |
| deleted       | tinyint(1)          | YES  |     | 0       |                |
+---------------+---------------------+------+-----+---------+----------------+
Any idea??
Da:
Gabriele Bulfon
A:
Piler User
Data:
24 luglio 2015 10.32.43 CEST
Oggetto:
Re: pilerimport mysql_stmt_execute errors on XStreamOS/illumos
Sorry for the typo in printf, now I get correct debug for numerical parameters.
I found the problem is not during the select of attachements, but during insert 
into:
4000000055d97d9d09ddb7fc006b3db79185: sql=INSERT INTO attachment 
(`piler_id`,`attachment_id`,`sig`,`name`,`type`,`size`,`ptr`) 
VALUES(?,?,?,?,?,?,?)
p_exec_query: param 0 - type 254 - length 36 - content 
4000000055d97d9d09ddb7fc006b3db79185
p_exec_query: param 1 - type 3 - length 0 - content 1
p_exec_query: param 2 - type 254 - length 64 - content 
0a2ae595399a2e82af7a7a65d737e54f1993f7f606119bd97a24874654ef10ac
p_exec_query: param 3 - type 254 - length 12 - content daticert.xml
p_exec_query: param 4 - type 254 - length 15 - content application/xml
p_exec_query: param 5 - type 3 - length 0 - content 809
p_exec_query: param 6 - ...[ I miss the debug here]...
still trying to figure out what is the data that may be bad to insert...
Da:
Gabriele Bulfon
A:
Piler User
Data:
23 luglio 2015 10.39.06 CEST
Oggetto:
Re: pilerimport mysql_stmt_execute errors on XStreamOS/illumos
Ok, I got a bit into the code.
Found that the error comes here, so I added a couple of logs to see what data 
is put in the prepared statement before
being executed.
attachment.c:
data-sql[data-pos] = state-attachments[i].digest; data-type[data-pos] = 
TYPE_STRING; data-pos++;
data-sql[data-pos] = (char *)&state-attachments[i].size); data-type[data-pos] = 
TYPE_LONG; data-pos++;
syslog(LOG_PRIORITY, "SONICLE - data %d: %s", 0, data-sql[0]);
syslog(LOG_PRIORITY, "SONICLE - data %d: %l", 1, *((long *)data-sql[1]));
if(p_exec_query(sdata, data-stmt_get_attachment_id_by_signature, data) == ERR) 
goto NOT_FOUND;
Seems that the problem comes with the numerical parameter, set up as a pointer 
to char, stated as type long.
If I try to get the original long value, I get nothing.
This is what I get in syslog:
SONICLE - data 0: 
2fc562039d4c9625581b7d7738666ed2cc0ddd284154fd8b7229dd9fcd9b23b1
SONICLE - data 1:
I also tried logging everything as char:
syslog(LOG_PRIORITY, "SONICLE - data %d: %s", 0, data-sql[0]);
syslog(LOG_PRIORITY, "SONICLE - data %d: %s", 1, data-sql[1]);
and I get these:
SONICLE - data 0: 
7b4e528276cc9f8041f7de2bf899afd7ef82628fc138a495febf11afd5b0349a
SONICLE - data 1: \366^B
SONICLE - data 0: 
9b67015fc956ac43b117227d67254263b7c72135e2f6be0744401eac8a0b304f
SONICLE - data 1: *^C
does this give you any clue?
I suspect my system configuration needs something different to treat numbers in 
prepared statements.
----------------------------------------------------------------------------------
Da: Janos SUTO
A: Piler User
Data: 21 luglio 2015 21.55.11 CEST
Oggetto: Re: pilerimport mysql_stmt_execute errors on XStreamOS/illumos
On 2015-07-21 17:11, Gabriele Bulfon wrote:
Looks like the statement is prepared in store_attachments functions,
of attachement.c, called by message.c,
using SQL_PREPARED_STMT_GET_ATTACHMENT_ID_BY_SIGNATURE.
How can I check the binding here?
look at the code :-) You should check the difference from the stock
source
files. It's difficult to say anything more specific, I can't see what
you
actually have.
Janos

Reply via email to