Hi mariadb-devel guys, could anyone help here in a documentation problem? (maybe not a problem...) *Please answer the BOLD questions* We are talking about CREATE PROCEDURE , about DETERMINISTIC / NO SQL http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html *characteristic*: COMMENT '*string*' | LANGUAGE SQL | *[NOT] DETERMINISTIC* | { CONTAINS SQL | *NO SQL* | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } *--------* *from mariadb-discuss:* *--------* Hi Federico, sorry i read some points and start writing, i will read and write after... i will answer with my experience as an user, not as a mariadb/mysql developer... 2013/9/2 Federico Razzoli <federico_raz@yahoo.it>
Hi Roberto I'll try to be more clear, please read carefully before answering
ok I know what a deterministic expression is - but *what kinds of output must
be deterministic for a procedure to be defined as DETERMINISTIC?*
hummm i don't know, but for procedure, there isn't a deterministic output right? just for funcitons... maybe it's a parser problem, allow deterministic keyword for procedures (must check) i'm thinking about, *why we use deterministic procs, and non deterministic procs?* *this change something important in mysql server? replication, query cache? other performace considerations?*
There are many types of output for a proc: * OUT params * SELECTs * writes on tables * SET @var
hum.... from what i remember procedure ~= function without return, something like a "void FUNCTION( any parameters )" function ~= a procedure that return values, in other words it must be different from void... that's why i think it's a problem at parser allowing deterministic keyword at procedure, but must check... i don't know if this keyword change something in mysql/mariadb code
For a deterministic proc, do all of these need to be deterministic?
well, for me, procs are always non deterministics since it don't change query cache invalidation and replication (must be done in binary i think)
* I guess the answer isn't easy. *
*yeah, i see, we need a simple answer not a simplified answer*
-- For "NO SQL" a complete list of SQL statements would be needed. If we use this as a reference: http://dev.mysql.com/doc/refman/5.6/en/sql-syntax.html , even RETURN seems to be a SQL statement,
yes, maybe the point isn't the SQL statements list, but other functions that mysql/mariadb server do? i don't know... NO SQL maybe is different from NOSQL (memcache,mongo,etc...) since nosql is newer than mysql procedures the point is *what's NO SQL in CREATE PROCEDURE ?* but of course it can't be true, because it's impossible to write a func
without RETURN.
yeah, maybe we have a problem at docs... let's see if anyone else know about this... maybe we need help from mariadb-devel list, i will include in this email...
Greetings Federico
bye =) thanks guys -- Roberto Spadim