<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4335613597062939644</id><updated>2011-04-21T14:22:50.307-07:00</updated><category term='sql check'/><category term='mysql stored procedures php'/><category term='mysql benchmark join'/><category term='vim ide php andrei zmievski'/><title type='text'>Code Ramblings</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://coderamblings.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://coderamblings.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>teanitiki</name><uri>http://www.blogger.com/profile/18250742912492553626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4335613597062939644.post-7322953064159517379</id><published>2007-07-31T14:02:00.000-07:00</published><updated>2007-07-31T14:07:25.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql check'/><title type='text'>SQL machinations</title><content type='html'>Recently, when performing a slew of alter table statements, I had to do some checking to verify, that I had not completely destroyed my database.&lt;br /&gt;&lt;br /&gt;From unix commandline&lt;br /&gt;$ mysqlshow --status my_table&lt;br /&gt;&lt;br /&gt;From mysql commandline&lt;br /&gt;&gt; SHOW TABLE STATUS FROM my_database;&lt;br /&gt;&gt; FLUSH TABLES;&lt;br /&gt;&gt; SHOW INDEX FROM my_table;&lt;br /&gt;&gt; ANALYZE TABLE my_table;&lt;br /&gt;&gt; CHECK TABLE my_table;&lt;br /&gt;&gt; OPTIMIZE TABLE my_table;&lt;br /&gt;&gt; DESCRIBE my_table&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335613597062939644-7322953064159517379?l=coderamblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderamblings.blogspot.com/feeds/7322953064159517379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4335613597062939644&amp;postID=7322953064159517379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/7322953064159517379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/7322953064159517379'/><link rel='alternate' type='text/html' href='http://coderamblings.blogspot.com/2007/07/sql-machinations.html' title='SQL machinations'/><author><name>teanitiki</name><uri>http://www.blogger.com/profile/18250742912492553626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4335613597062939644.post-211359929209525056</id><published>2007-04-30T15:54:00.000-07:00</published><updated>2007-04-30T15:58:38.209-07:00</updated><title type='text'>PHP's filter extension</title><content type='html'>When I read about PHP's filter functions, http://php.net/filter, I had to try them out.&lt;br /&gt;&lt;br /&gt;the install promises to be short and sweet: $ pecl install filter&lt;br /&gt;&lt;br /&gt;in reality, it was anything but sweet, after a little searching around, here are the commands that I used with help from pecl bug 9680, for installation on feisty ubuntu:&lt;br /&gt;&lt;br /&gt;&gt; sudo apt-get install php5-dev&lt;br /&gt;&gt; sudo apt-get install libpcre3-dev&lt;br /&gt;&gt; sudo pecl install channel://pecl.php.net/filter-0.9.2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335613597062939644-211359929209525056?l=coderamblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderamblings.blogspot.com/feeds/211359929209525056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4335613597062939644&amp;postID=211359929209525056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/211359929209525056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/211359929209525056'/><link rel='alternate' type='text/html' href='http://coderamblings.blogspot.com/2007/04/phps-filter-extension.html' title='PHP&apos;s filter extension'/><author><name>teanitiki</name><uri>http://www.blogger.com/profile/18250742912492553626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4335613597062939644.post-1735251193700191558</id><published>2007-02-24T09:58:00.000-08:00</published><updated>2007-03-02T13:32:29.429-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim ide php andrei zmievski'/><title type='text'>Vim of Course!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pFeFZn1ZajU/ReCBnqrvmHI/AAAAAAAAAAY/SADPnNyWT3M/s1600-h/conf2007_andrei01.jpg"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_pFeFZn1ZajU/ReCBnqrvmHI/AAAAAAAAAAY/SADPnNyWT3M/s320/conf2007_andrei01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5035166901872859250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When I voted and lobbied enthusiastically to have &lt;a href="http://www.gravitonic.com"&gt;Andrei Zmievski&lt;/a&gt; talk about Vim at the &lt;a href="http://vancouver.php.net"&gt;Vancouver PHP Conference&lt;/a&gt;, I had no idea just how fun the talk was going to be. As a user of vi, it is my editor of choice. Previously I was wondering if I was the only one, and a bit cuckoo. My boyfriend used emacs, as well as many others, if not using the Zend IDE or &lt;a href="http://www.activestate.com/products/komodo_ide/"&gt;Komodo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, at the &lt;a href="http://www.gravitonic.com/talks"&gt;session of Vi&lt;/a&gt;, the good attendance heartened my spirits to realize that I may not be the only old-fashioned coder around.&lt;br /&gt;&lt;br /&gt;Also, when the final votes were tallied up, surprise, surprise, Andrei received the highest average, beating out even Rasmus's keynote speech.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://www.gravitonic.com/talks/"&gt;Andrei's slides&lt;/a&gt;, and download the tarball, Vim of course!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335613597062939644-1735251193700191558?l=coderamblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderamblings.blogspot.com/feeds/1735251193700191558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4335613597062939644&amp;postID=1735251193700191558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/1735251193700191558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/1735251193700191558'/><link rel='alternate' type='text/html' href='http://coderamblings.blogspot.com/2007/02/vim-of-course.html' title='Vim of Course!'/><author><name>teanitiki</name><uri>http://www.blogger.com/profile/18250742912492553626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pFeFZn1ZajU/ReCBnqrvmHI/AAAAAAAAAAY/SADPnNyWT3M/s72-c/conf2007_andrei01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4335613597062939644.post-4588282845476302967</id><published>2007-02-16T10:29:00.000-08:00</published><updated>2007-02-16T10:34:46.507-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql benchmark join'/><title type='text'>MySQL benchmark left join vs not in</title><content type='html'>To decide whether to use 'NOT IN' or a left join, to find out all the rows in a table that did not have a relationship to another table, e.g. find all houses with no kittens.&lt;br /&gt;&lt;br /&gt;I used the benchmark() mysql command to compare, in summary there was not much difference at all, using the mysql command prompt from localhost.&lt;br /&gt;&lt;br /&gt;Statement 1&lt;br /&gt;select benchmark(10000000000,'select * from houses where id not in (select house_id from kittens) ORDER BY id');&lt;br /&gt;18.47s&lt;br /&gt;18.51s&lt;br /&gt;18.49s&lt;br /&gt;18.52s&lt;br /&gt;18.52s&lt;br /&gt;&lt;br /&gt;Statement 2&lt;br /&gt;select benchmark(10000000000,'select houses.* from houses left join kittens on houses.id=kittens.house_id where kittens.house_id is NULL ORDER BY houses.id');&lt;br /&gt;18.51s&lt;br /&gt;18.49s&lt;br /&gt;18.50s&lt;br /&gt;18.50s&lt;br /&gt;18.51s&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335613597062939644-4588282845476302967?l=coderamblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderamblings.blogspot.com/feeds/4588282845476302967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4335613597062939644&amp;postID=4588282845476302967' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/4588282845476302967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/4588282845476302967'/><link rel='alternate' type='text/html' href='http://coderamblings.blogspot.com/2007/02/mysql-benchmark-left-join-vs-not-in.html' title='MySQL benchmark left join vs not in'/><author><name>teanitiki</name><uri>http://www.blogger.com/profile/18250742912492553626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4335613597062939644.post-8618888241328846252</id><published>2007-02-02T16:54:00.000-08:00</published><updated>2007-03-05T12:27:07.406-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql stored procedures php'/><title type='text'>MySPL stored procedures in MySQL</title><content type='html'>In 2004, stored procedures were introduced to MySQL 5 with a team under the direction of Mr Per-Erik Martin.&lt;br /&gt;&lt;br /&gt;Here is the example Peter Gulutzan listed&lt;br /&gt;&lt;br /&gt;DELIMITER //&lt;br /&gt;&lt;br /&gt;CREATE PROCEDURE payment [2]&lt;br /&gt;(payment_amount DECIMAL(6,2),&lt;br /&gt;payment_seller_id INT)&lt;br /&gt;BEGIN&lt;br /&gt;DECLARE n DECIMAL(6,2);&lt;br /&gt;SET n = payment_amount - 1.00;&lt;br /&gt;INSERT INTO Moneys VALUES (n, CURRENT_DATE);&lt;br /&gt;IF payment_amount &gt; 1.00 THEN&lt;br /&gt;UPDATE Sellers&lt;br /&gt;SET commission = commission + 1.00&lt;br /&gt;WHERE seller_id = payment_seller_id;&lt;br /&gt;END IF;&lt;br /&gt;END;&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Looping&lt;/strong&gt;&lt;br /&gt;Statement labels can be used before BEGIN, WHILE, REPEAT OR LOOP. The statement 'LEAVE {labelname}' will jump out of the compound statement.&lt;br /&gt;ITERATE used before the label name, is like 'CONTINUE'&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Variable Limit clause in Select&lt;/strong&gt;&lt;br /&gt;Stored procedures do not handle the 'LIMIT 0,30' yet.&lt;br /&gt;However, a few work-arounds have been suggested in this &lt;a href="http://bugs.mysql.com/bug.php?id=11918"&gt;bug&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;One of the ideas suggest to use a prepared statement, which can handle the LIMIT clause just fine, inside the stored procedure.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PHP 5 calling Stored Procedures&lt;/strong&gt;&lt;br /&gt;Using MySQLi:&lt;br /&gt;* Create a new mysqli ocnnection&lt;br /&gt;   $dbh = new mysqli($hostname, $username, $password, $database);&lt;br /&gt;* Check that the mysqli connection is properly connected using mysqli_connect_errno()&lt;br /&gt;* Call the stored procedure using $dbh-&gt;query("call procedure_name( $variables )") and assign it to a result set else, print use errno to print&lt;br /&gt;* Iterate over the result set with fetch_object&lt;br /&gt;&lt;br /&gt;Using PDO:&lt;br /&gt;$pdo = new PDO('mysql:localhost;dbname=pdotest', 'root', '123182');&lt;br /&gt;$pdo-&gt;setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);&lt;br /&gt;$stmt = $pdo-&gt;query('CALL&lt;br /&gt;pdotest.spIsStringComparisonCaseInsensitive()');&lt;br /&gt;&lt;br /&gt;foreach($stmt as $row)&lt;br /&gt;{&lt;br /&gt; echo $row['isInsensitive'];&lt;br /&gt;}&lt;br /&gt;$stmt-&gt;closeCursor();&lt;br /&gt;$stmt = null;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Recommended Resources&lt;/strong&gt;&lt;br /&gt;I highly recommend reading the book:&lt;br /&gt;&lt;a href="http://www.oreilly.com/catalog/mysqlspp/" target="_blank"&gt;MySQL Stored Procedure Programming&lt;/a&gt;&lt;br /&gt;By Guy Harrison, Steven Feuerstein&lt;br /&gt;&lt;br /&gt;Myself, I admit have not touched the book, except download the excellent examples, which includes numerous sql examples, as well as php, java, python, amongst others.&lt;br /&gt;&lt;br /&gt;Another excellent resource is:&lt;br /&gt;&lt;a href="http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.pdf" target="_blank"&gt;MySQL 5.0 Stored Procedures&lt;/a&gt;&lt;br /&gt;Peter Gulutzan&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Useful commands&lt;/strong&gt;&lt;br /&gt;List of all procedures: &lt;code&gt;SHOW PROCEDURE STATUS;&lt;/code&gt;&lt;br /&gt;Narrowed down: &lt;code&gt;SHOW PROCEDURE STATUS LIKE '%Test%';&lt;/code&gt;&lt;br /&gt;List of all functions: &lt;code&gt;SHOW FUNCTION STATUS;&lt;/code&gt;&lt;br /&gt;Display details of a sp: &lt;code&gt;SHOW CREATE PROCEDURE sprocTest;&lt;/code&gt;&lt;br /&gt;Change name of a sp: &lt;code&gt;ALTER PROCEDURE sp_myfirst NAME sp_second;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Restrictions on Stored Routines and Triggers&lt;/strong&gt;&lt;br /&gt;Stored routines cannot contain arbitrary SQL statements. The following statements are disallowed:&lt;br /&gt;*      The locking statements LOCK TABLES, UNLOCK TABLES.&lt;br /&gt;*      LOAD DATA and LOAD TABLE.&lt;br /&gt;*      SQL prepared statements (PREPARE, EXECUTE, DEALLOCATE PREPARE), only applies to versions pre 5.0.13&lt;br /&gt;Read about more restrictions here:&lt;br /&gt;&lt;a href="http://mysql.org/doc/refman/5.1/en/routine-restrictions.html"&gt;Stored routine restrictions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.oreilly.com/catalog/mysqlspp/"&gt;MySQL Stored Procedure Programming&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mysql.org/doc/refman/5.1/en/routine-restrictions.html"&gt;Mysql.org Reference on Stored Procedures&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/stored-procedures.html"&gt;Stored Procedures in MySQL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.digitalpropulsion.org/Programming/Stored_Procedures_in_MySQL_5_0"&gt;Stored Procedures in MySQL 5.0&lt;/a&gt;&lt;br /&gt;&lt;a href="http://builder.com.com/5100-6388-5178706.html"&gt;MySQL and Stored Procedures&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.devshed.com/c/a/MySQL/A-DIY-Approach-to-Stored-Procedures-in-MySQL/"&gt;A DIY approach to Stored Procedures in MySQL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hades.phparch.com/ceres/public/article/index.php/art::mysql::sp_programming_mysql_5::part_1"&gt;Stored  Procedure Programming for MySQL 5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bugs&lt;/strong&gt;&lt;br /&gt;http://phpbuilder.com/board/showthread.php?t=10332897&lt;br /&gt;http://bugs.mysql.com/bug.php?id=11918&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335613597062939644-8618888241328846252?l=coderamblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coderamblings.blogspot.com/feeds/8618888241328846252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4335613597062939644&amp;postID=8618888241328846252' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/8618888241328846252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4335613597062939644/posts/default/8618888241328846252'/><link rel='alternate' type='text/html' href='http://coderamblings.blogspot.com/2007/02/myspl.html' title='MySPL stored procedures in MySQL'/><author><name>teanitiki</name><uri>http://www.blogger.com/profile/18250742912492553626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry></feed>
