Hello.


In my opinion it is a bug. You may add your comments at:

  http://bugs.mysql.com/bug.php?id=15137



>If this is a bug, I'll be happy to file a report... but I'd really like a

>solution that will let me use the function.



I've noticed that you may create a temporary tables from views like your,

so a workaround is to create a temporary table first, and then a persistent 

table.



>I hit a problem using functions in stored procedures, too, and I'm wondering

>if these are related.



Please provide more information or a test case. Check that you're using

the latest MySQL version (5.0.16 now). Functions work in stored

procedures:



drop procedure if exists psignal;

drop function if exists get_signal;

delimiter $$

CREATE FUNCTION get_signal (cnt MEDIUMINT(8), ma MEDIUMINT(8), stdv

MEDIUMINT(8)) RETURNS TINYINT(1)

DETERMINISTIC

RETURN IF (ma > 9 AND stdv > 0 AND (cnt >= ma + (2 * stdv)) OR cnt <= ma -

(2 * stdv),

IF (cnt >= ma + (2 * stdv), 1, -1),

0);

$$

CREATE procedure psignal()

DETERMINISTIC

BEGIN

SELECT get_signal(0,1,1);

END;

$$

delimiter ;

call psignal();



[EMAIL PROTECTED] mysql-debug-5.0.16-linux-i686-glibc23]$ lmysql <p.sql

get_signal(0,1,1)

0







Nick Arnett <[EMAIL PROTECTED]> wrote:

>I'm doing the equivalent of a materialized view in MySQL 5.0.15 and I've hit

>a strange error.

>

>Here's the scenario.

>

>CREATE OR REPLACE VIEW x_view AS

>SELECT [select statement, blah, blah, blah];

>

>DROP TABLE IF EXISTS x_mview;

>CREATE TABLE x_mview SELECT * FROM x_view;

>

>That was all working fine until I created a function that I use inside of

>the view. Now the last statement, the one that would materialize the view,

>returns a table locking error!

>

>ERROR 1100 (HY000): Table 'x_mview' was not locked with LOCK TABLES

>

>It's difficult to lock a table that doesn't exist yet...

>

>"SELECT * FROM x_view" works fine.

>

>The function is a simple bit of logic (it tests a count, moving average and

>standard deviation to see if the count is more or less than two standard

>deviations from the mean):

>

>CREATE FUNCTION get_signal (cnt MEDIUMINT(8), ma MEDIUMINT(8), stdv

>MEDIUMINT(8)) RETURNS TINYINT(1)

>DETERMINISTIC

>RETURN IF (ma > 9 AND stdv > 0 AND (cnt >= ma + (2 * stdv)) OR cnt <= ma -

>(2 * stdv),

>IF (cnt >= ma + (2 * stdv), 1, -1),

>0);

>

>If this is a bug, I'll be happy to file a report... but I'd really like a

>solution that will let me use the function.

>

>I hit a problem using functions in stored procedures, too, and I'm wondering

>if these are related.

>

>Nick



-- 
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.NET http://www.ensita.net/
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Gleb Paharenko
 / /|_/ / // /\ \/ /_/ / /__   [EMAIL PROTECTED]
/_/  /_/\_, /___/\___\_\___/   MySQL AB / Ensita.NET
       <___/   www.mysql.com




-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to