<?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-8686536047133768324</id><updated>2011-07-30T23:16:34.492-07:00</updated><title type='text'>Tracking mechanism for phpMyAdmin</title><subtitle type='html'>This is my blog for my accepted Google of Summer Code 2009 project. For an introduction please read the project information at http://socghop.appspot.com/document/show/user/webskipper/projectinfo</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8686536047133768324.post-1736689762558529046</id><published>2009-08-18T08:15:00.000-07:00</published><updated>2009-08-18T14:32:11.643-07:00</updated><title type='text'>Status report August 11th - August 18th</title><content type='html'>&lt;object width="461" height="384" class="BLOG_video_class" id="BLOG_video-f22a89e857993360" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v19.nonxt8.googlevideo.com/videoplayback?id%3Df22a89e857993360%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331291519%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5FF220400B5FE82DF1EAB92C6E3B39BA63AE6187.700D01B960982C19885F444DFE32947704752AA9%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Df22a89e857993360%26offsetms%3D5000%26itag%3Dw160%26sigh%3DvkEmMfMMlAtvtbwEJZqJNmq08mY&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="461" height="384" bgcolor="#FFFFFF"flashvars="flvurl=http://v19.nonxt8.googlevideo.com/videoplayback?id%3Df22a89e857993360%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331291519%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5FF220400B5FE82DF1EAB92C6E3B39BA63AE6187.700D01B960982C19885F444DFE32947704752AA9%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Df22a89e857993360%26offsetms%3D5000%26itag%3Dw160%26sigh%3DvkEmMfMMlAtvtbwEJZqJNmq08mY&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://page.mi.fu-berlin.de/rutkowsk/phpMyAdmin/howto.avi"&gt;http://page.mi.fu-berlin.de/rutkowsk/phpMyAdmin/howto.avi&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;KEY ACCOMPLISHMENTS LAST WEEK&lt;br /&gt;=============================&lt;br /&gt;&lt;br /&gt;- Wrote additional documentation, added information about the&lt;br /&gt;config vars to Documentation.html&lt;br /&gt;&lt;br /&gt;- Used add_message(_file).sh to add lang vars.&lt;br /&gt;&lt;br /&gt;- Made the tracking of SQL dump imports working.&lt;br /&gt;&lt;br /&gt;- Created a short how-to video (see my blog)&lt;br /&gt;&lt;br /&gt;- Asked friends to evaluate my project.&lt;br /&gt;&lt;br /&gt;- Registered to PMA wiki, but can't edit all articles.&lt;br /&gt;&lt;br /&gt;KEY TASKS THAT STALLED&lt;br /&gt;======================&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;KEY CONCERNS&lt;br /&gt;============&lt;br /&gt;Evaluation&lt;br /&gt;&lt;br /&gt;TASKS IN THE UPCOMING WEEK(s)&lt;br /&gt;==========================&lt;br /&gt;- Improve the mechanism&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-1736689762558529046?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=f22a89e857993360&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/1736689762558529046/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/08/status-report-august-11th-august-18th.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/1736689762558529046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/1736689762558529046'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/08/status-report-august-11th-august-18th.html' title='Status report August 11th - August 18th'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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-8686536047133768324.post-5271675107741608623</id><published>2009-08-10T07:05:00.000-07:00</published><updated>2009-08-10T07:06:41.346-07:00</updated><title type='text'>Status report August 3rd - August 10th</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;KEY ACCOMPLISHMENTS LAST WEEK&lt;br /&gt;=============================&lt;br /&gt;&lt;br /&gt;- I added an user-friendly visualisation of the structure snapshots.&lt;br /&gt;It is similar to the structure page of phpMyAdmin.&lt;br /&gt;&lt;br /&gt;- Secondly I added handlers for CREATE/DROP/ALTER DATABASE.&lt;br /&gt;Tracking for these commands is enabled by default. User has not to&lt;br /&gt;create a version for it, it will created by the Tracker autmatically.&lt;br /&gt;&lt;br /&gt;- An output for these tracked commands is available on the "Tracking"&lt;br /&gt;page for databases now.&lt;br /&gt;&lt;br /&gt;- Added a line number to the tracking report.&lt;br /&gt;&lt;br /&gt;KEY TASKS THAT STALLED&lt;br /&gt;======================&lt;br /&gt;Evaluation&lt;br /&gt;&lt;br /&gt;KEY CONCERNS&lt;br /&gt;============&lt;br /&gt;Evaluation, Documentation, Optimization.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TASKS IN THE UPCOMING WEEK&lt;br /&gt;==========================&lt;br /&gt;- Try to get feedback from users and developers.&lt;br /&gt;- Write documentation, improve my code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;&lt;br /&gt;Alexander&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-5271675107741608623?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/5271675107741608623/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/08/status-report-august-3rd-august-10th.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/5271675107741608623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/5271675107741608623'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/08/status-report-august-3rd-august-10th.html' title='Status report August 3rd - August 10th'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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-8686536047133768324.post-3666304133421348052</id><published>2009-08-02T16:40:00.000-07:00</published><updated>2009-08-02T17:48:14.621-07:00</updated><title type='text'>Status report July 25th - August 2nd</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;my report is a little bit delayed, my great-grandfather had 90th birthday on friday. I hope I will reach this age too ;)&lt;br /&gt;&lt;br /&gt;KEY ACCOMPLISHMENTS LAST WEEK&lt;br /&gt;=============================&lt;br /&gt;&lt;br /&gt;- Created an overview page for (un)tracked tables/views in a database. It gives a short status report of tracked tables/views and links to the "create version" page for untracked tables.&lt;br /&gt;&lt;br /&gt;- A new grey-colored icon indicates whether a table has versions but deactive tracking status.&lt;br /&gt;&lt;br /&gt;- Added handlers for CREATE/DROP INDEX, CREATE/ALTER/DROP VIEW.&lt;br /&gt;&lt;br /&gt;- Auto-creation functionality implemented. It creates a version of new tables and views automatically.&lt;br /&gt;&lt;br /&gt;- Some new config vars added. Here a short introduction:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;// Creates tracking of new tables and views automatically. Default value is true.&lt;br /&gt;$cfg['Servers'][$i]['tracking_version_auto_create'] = true|false&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;// Adds "DROP VIEW" statement as prefix of "CREATE VIEW" logs. Default value is true.&lt;br /&gt;$cfg['Servers'][$i]['tracking_add_drop_view'] = true|false&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;// Adds "DROP TABLE" statement as prefix of "CREATE TABLE" logs. Default value is true.&lt;br /&gt;$cfg['Servers'][$i]['tracking_add_drop_table'] = true|false&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;// Defines the statements which the auto-creation mechanism uses for new tracked versions.&lt;br /&gt;// Default value is&lt;br /&gt;// CREATE TABLE,ALTER TABLE,DROP TABLE,RENAME TABLE,&lt;br /&gt;// CREATE INDEX,DROP INDEX,&lt;br /&gt;// INSERT,UPDATE,DELETE,TRUNCATE,REPLACE,&lt;br /&gt;// CREATE VIEW,ALTER VIEW,DROP VIEW,&lt;br /&gt;// CREATE DATABASE,ALTER DATABASE,DROP DATABASE;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$cfg['Servers'][$i]['tracking_default_statements'] = ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;KEY TASKS THAT STALLED&lt;br /&gt;======================&lt;br /&gt;-&lt;br /&gt;&lt;br /&gt;KEY CONCERNS&lt;br /&gt;============&lt;br /&gt;Finishing list of deliverables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TASKS IN THE UPCOMING WEEK&lt;br /&gt;==========================&lt;br /&gt;- I want to focus on structure snapshots. The snapshot is saved in a php array.&lt;br /&gt;A user-friendly visualisation of it would be fine. Comparison of snapshots is an idea.&lt;br /&gt;&lt;br /&gt;- Secondly I want to add an ouput of tracked CREATE/DROP/ALTER DATABASE statements&lt;br /&gt;to the "Tracking" overview page for databases.&lt;br /&gt;&lt;br /&gt;- When time is left: start first phase of testing and evaluation. Try to get more feedback from users and developers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;&lt;br /&gt;Alexander&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-3666304133421348052?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/3666304133421348052/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/08/status-report-july-25th-august-2nd.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/3666304133421348052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/3666304133421348052'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/08/status-report-july-25th-august-2nd.html' title='Status report July 25th - August 2nd'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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-8686536047133768324.post-4745267286288290078</id><published>2009-07-24T13:15:00.000-07:00</published><updated>2009-07-24T13:24:56.481-07:00</updated><title type='text'>Status report July 18th - 24th</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8gxT4eZRQIE/SmoWaw-oNvI/AAAAAAAAAAc/sj2v3MVuBSc/s1600-h/tracking_mech_july_24th.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 256px;" src="http://4.bp.blogspot.com/_8gxT4eZRQIE/SmoWaw-oNvI/AAAAAAAAAAc/sj2v3MVuBSc/s320/tracking_mech_july_24th.png" alt="" id="BLOGGER_PHOTO_ID_5362122955417990898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hi all,&lt;br /&gt;&lt;br /&gt;KEY ACCOMPLISHMENTS LAST WEEK&lt;br /&gt;=============================&lt;br /&gt;- I added a separate filter functionality to the tracking report.&lt;br /&gt;Now it is possible to list data definition, data manipulation&lt;br /&gt;or both kinds of statements. Date ranges are supported.&lt;br /&gt;&lt;br /&gt;- Secondly I added an user filter. PMA_Tracker tracks the&lt;br /&gt;logged in username. The tracking report page supports&lt;br /&gt;to list all tracked usernames (*), one username or a list&lt;br /&gt;of usernames with ',' as delimiter.&lt;br /&gt;&lt;br /&gt;- The export form uses the described filter settings.&lt;br /&gt;&lt;br /&gt;- I added a new export option: "SQL dump as file download".&lt;br /&gt;Users can directly download the statements.&lt;br /&gt;&lt;br /&gt;- I did some work on the SQL dump page. It shows the SQL query&lt;br /&gt;form now. The lines&lt;br /&gt;&lt;br /&gt;CREATE database IF NOT EXISTS pma_temp_db;&lt;br /&gt;USE pma_temp_db;&lt;br /&gt;&lt;br /&gt;will automatically added to the dump. The user can copy the whole&lt;br /&gt;dump to the clipboard or execute it by clicking on the submit button.&lt;br /&gt;If he submits it he gets a "temporary" table and can do fine things&lt;br /&gt;with it (use PMA export functionality for example).&lt;br /&gt;&lt;br /&gt;- I decided to cut off `dbname` . prefixes from tracked statements.&lt;br /&gt;I used a Perl regular expression for that. Only without these prefixes&lt;br /&gt;the dump export to other databases is possible.&lt;br /&gt;&lt;br /&gt;- I merged my Subversion branch with trunk/phpMyAdmin and&lt;br /&gt;committed the changes. Not a big job, but good to see that it worked.&lt;br /&gt;&lt;br /&gt;- German translation added.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KEY TASKS THAT STALLED&lt;br /&gt;======================&lt;br /&gt;I tried to use libraries/sqlparser.lib.php within my PMA_Tracker&lt;br /&gt;but it produces a lot of notices.&lt;br /&gt;In addition PMA_SQP_analyze() works only for SELECT queries.&lt;br /&gt;Did not see an easy (time-efficient) way to enable it for my PMA_Tracker&lt;br /&gt;so I reduced the queue priority for this job.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KEY CONCERNS&lt;br /&gt;============&lt;br /&gt;Tracking for whole databases is still open.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TASKS IN THE UPCOMING WEEK&lt;br /&gt;==========================&lt;br /&gt;- Create first prototype of tracking page for databases / set of tables.&lt;br /&gt;- Add handlers for CREATE/DROP INDEX, CREATE/ALTER/DROP VIEW.&lt;br /&gt;- Inform users about deactivated tracking versions (use an icon or&lt;br /&gt;notice message).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally I want to call attention to&lt;br /&gt;&lt;br /&gt;&lt;a class="moz-txt-link-freetext" href="http://demo.phpmyadmin.net/gsoc-alex/"&gt;http://demo.phpmyadmin.net/gsoc-alex/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Its a copy of my svn branch (thanks to Michal).&lt;br /&gt;&lt;br /&gt;Best regards and have a nice WE&lt;br /&gt;&lt;br /&gt;Alexander&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-4745267286288290078?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/4745267286288290078/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/07/hi-all-key-accomplishments-last-week-i.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/4745267286288290078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/4745267286288290078'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/07/hi-all-key-accomplishments-last-week-i.html' title='Status report July 18th - 24th'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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/_8gxT4eZRQIE/SmoWaw-oNvI/AAAAAAAAAAc/sj2v3MVuBSc/s72-c/tracking_mech_july_24th.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8686536047133768324.post-2090672688744312318</id><published>2009-07-17T13:34:00.001-07:00</published><updated>2009-07-17T13:34:58.203-07:00</updated><title type='text'>Status report July 13th - 17th</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;here is my report:&lt;br /&gt;&lt;br /&gt;KEY ACCOMPLISHMENTS LAST WEEK&lt;br /&gt;=============================&lt;br /&gt;- I got my own SVN branch phpmyadmin/branches/gsoc/alex/phpMyAdmin&lt;br /&gt;(thanks to Marc for the permissions).&lt;br /&gt;&lt;br /&gt;- SVN copy from trunk/phpMyAdmin was unexpected not easy for me, because  I made the mistake to use http instead of https and so I got the error  message "502 BAD GATEWAY". First I thought it was a problem with my  subclipse plugin but then I found the hint about the protocol and then  the copy process worked fine.&lt;br /&gt;&lt;br /&gt;- Switched from Eclipse 3.2 to NetBeans IDE 6.7. PHP eclipse nerved&lt;br /&gt;me because it was sometimes unstable and did not open some files.  NetBeans seems to be more optimized for PHP development.&lt;br /&gt;&lt;br /&gt;- Did some work on my code too &lt;span class="moz-smiley-s1"&gt;&lt;span&gt; :) &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Here is a summary of my committed changes to SVN branch:&lt;br /&gt;&lt;br /&gt;+ First tracking mechanism patch applied.&lt;br /&gt;+ Problems causing PHP notices solved.&lt;br /&gt;+ Some useless PMA_DBI_select_db() calls removed.&lt;br /&gt;+ Bug: after renaming a table the list of tracking versions is broken  (Fixed)&lt;br /&gt;+ Using PMA_query_as_controluser where it is possible.&lt;br /&gt;+ New tab "Tracking" for the table view added.&lt;br /&gt;+ A little bit PMA_Tracker code refactoring.&lt;br /&gt;+ SQL dump of pma_tracking to scripts/create_tables.sql added.&lt;br /&gt;+ Localization introduced, using string vars in english-utf-8.inc.php  for outputs.&lt;br /&gt;+ Short php tags and short print instruction removed how it is  recommended in PEAR coding standards.&lt;br /&gt;(Thanks to Michal for the helpful hints).&lt;br /&gt;&lt;br /&gt;KEY TASKS THAT STALLED&lt;br /&gt;======================&lt;br /&gt;Parsing for additional commands like ALTER VIEW etc.&lt;br /&gt;First I want to read and tryout PMA SQL parse functions.&lt;br /&gt;It makes more sense to optimize the parser of PMA_Tracker before&lt;br /&gt;adding new types of SQL statements.&lt;br /&gt;&lt;br /&gt;KEY CONCERNS&lt;br /&gt;============&lt;br /&gt;Tracking functionality for whole databases. At current status a user has  to select every single table that he wants to track.&lt;br /&gt;&lt;br /&gt;Is it possible to forward prepared SQL dump code to the export script of  PMA ? When yes I could use it to deliver more export types than SQL dump  and SQL execution.&lt;br /&gt;&lt;br /&gt;TASKS IN THE UPCOMING WEEK&lt;br /&gt;==========================&lt;br /&gt;- Make me familiar with the PMA SQL parser library / functions.&lt;br /&gt;- Try to use PMA SQL parser library.&lt;br /&gt;- I think it would be a good idea to track the usernames too. I will add&lt;br /&gt;this attribute to the tracker log and build a filter to the tracking report.&lt;br /&gt;&lt;br /&gt;Best regards and have a nice WE&lt;br /&gt;&lt;br /&gt;Alexander&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-2090672688744312318?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/2090672688744312318/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/07/status-report-july-13th-17th.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/2090672688744312318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/2090672688744312318'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/07/status-report-july-13th-17th.html' title='Status report July 13th - 17th'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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-8686536047133768324.post-8358062392978913332</id><published>2009-07-12T12:26:00.001-07:00</published><updated>2009-07-12T12:35:29.786-07:00</updated><title type='text'>First version finished</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8gxT4eZRQIE/Slo67CJ2sDI/AAAAAAAAAAU/tm2-WirZx_Y/s1600-h/tracking_page.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 256px;" src="http://3.bp.blogspot.com/_8gxT4eZRQIE/Slo67CJ2sDI/AAAAAAAAAAU/tm2-WirZx_Y/s320/tracking_page.png" alt="" id="BLOGGER_PHOTO_ID_5357659492575522866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hi all,&lt;br /&gt;&lt;br /&gt;I finished my part for Googles mid term evaluation.&lt;br /&gt;Please feel free to try out my code, you will find it here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://page.mi.fu-berlin.de/rutkowsk/tracking_mechanism.zip"&gt;http://page.mi.fu-berlin.de/rutkowsk/tracking_mechanism.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;KEY ACCOMPLISHMENTS LAST WEEKS&lt;br /&gt;==============================&lt;br /&gt;Finished following functionalities:&lt;br /&gt;- Tables can be tracked by mechanism now&lt;br /&gt;- System logs data definition and data manipulation statements:&lt;br /&gt;INSERT, UDATE, DELETE, TRUNCATE, ALTER TABLE, RENAME TABLE&lt;br /&gt;- Tracking can be activated for a subset of these commands&lt;br /&gt;- Tables with active tracking are marked with an "eye" icon.&lt;br /&gt;- Simple versioning system. User can create new tracking versions.&lt;br /&gt;- Deactivation and Reactivation of tracking jobs is possible.&lt;br /&gt;- Simple schema (structure) snapshot, uses SHOW FULL COLUMNS FROM and&lt;br /&gt;SHOW INDEX FROM&lt;br /&gt;- When user is selecting a tracked table, a notice will printed out&lt;br /&gt;- Switching between tables within a database is possible&lt;br /&gt;- Tracking report is available. Contains dates and statements.&lt;br /&gt;- Simple export form added, it can be used for undo action.&lt;br /&gt;(structure only|data only|both) -&gt; (SQL dump|SQL execution)&lt;br /&gt;- Date_from - Date_to range selection for exports added.&lt;br /&gt;&lt;br /&gt;KEY CONCERNS&lt;br /&gt;============&lt;br /&gt;I want to teach the tracker more SQL statements:&lt;br /&gt;ALTER VIEW, CREATE INDEX, DROP INDEX&lt;br /&gt;&lt;br /&gt;Tracker should handle whole databases.&lt;br /&gt;&lt;br /&gt;TASKS IN THE UPCOMING WEEK(S)&lt;br /&gt;=============================&lt;br /&gt;- Evaluate your feedback to my PMA_Tracker&lt;br /&gt;- Localize english-only strings&lt;br /&gt;- Add more export possibilities&lt;br /&gt;- Snapshot comparison would be fine&lt;br /&gt;- Prettify some layout elements&lt;br /&gt;&lt;br /&gt;I hope you are happy about the new Tracker, please send me your&lt;br /&gt;feedback. I need it for a successful progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-8358062392978913332?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/8358062392978913332/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/07/first-version-finished.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/8358062392978913332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/8358062392978913332'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/07/first-version-finished.html' title='First version finished'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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://3.bp.blogspot.com/_8gxT4eZRQIE/Slo67CJ2sDI/AAAAAAAAAAU/tm2-WirZx_Y/s72-c/tracking_page.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8686536047133768324.post-7457387589722934162</id><published>2009-06-03T15:39:00.000-07:00</published><updated>2009-06-03T15:54:05.658-07:00</updated><title type='text'>HTML pages for tracking tables</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8gxT4eZRQIE/Sib8t8ty_xI/AAAAAAAAAAM/FFqkR-gBjJM/s1600-h/tracking_table_active.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 249px; height: 157px;" src="http://2.bp.blogspot.com/_8gxT4eZRQIE/Sib8t8ty_xI/AAAAAAAAAAM/FFqkR-gBjJM/s320/tracking_table_active.png" alt="" id="BLOGGER_PHOTO_ID_5343235874244198162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am writing some html forms for the tracking mechanism. First we need pages for enabling / disabling tracking functionality for tables. So I created a first draft for a table with activated tracking. My plan for this page is to list all versions of the selected table, if there is any. Secondly it will be possible&lt;br /&gt;to create a new version (tracking for previous version is then deactived)  and the user can make a selection of data definition commands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-7457387589722934162?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/7457387589722934162/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/06/i-am-writing-some-html-forms-for.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/7457387589722934162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/7457387589722934162'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/06/i-am-writing-some-html-forms-for.html' title='HTML pages for tracking tables'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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://2.bp.blogspot.com/_8gxT4eZRQIE/Sib8t8ty_xI/AAAAAAAAAAM/FFqkR-gBjJM/s72-c/tracking_table_active.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8686536047133768324.post-5018361554377608681</id><published>2009-06-03T15:19:00.000-07:00</published><updated>2009-06-03T16:03:23.630-07:00</updated><title type='text'>Modelling pma_tracking</title><content type='html'>For the tracking mechanism we need a table to storage information about the tracked database and table manipulations. I want to differentiate between data definition (schema) and data manipulation commands. So, my first step was to develop a simple table named pma_tracking which I can use for my tracking operations later:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;CREATE TABLE IF NOT EXISTS `pma_tracking` (&lt;br /&gt;`db_name` varchar(64) collate utf8_bin NOT NULL,&lt;br /&gt;`table_name` varchar(64) collate utf8_bin NOT NULL,&lt;br /&gt;`version` int(10) unsigned NOT NULL,&lt;br /&gt;`date_created` datetime NOT NULL,&lt;br /&gt;`date_updated` datetime NOT NULL,&lt;br /&gt;`schema_snapshot` text collate utf8_bin NOT NULL,&lt;br /&gt;`schema_sql` text collate utf8_bin,&lt;br /&gt;`data_sql` text collate utf8_bin,&lt;br /&gt;`tracking` set('UPDATE','REPLACE','INSERT','DELETE','TRUNCATE','CREATE DATABASE','ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE','RENAME TABLE','DROP TABLE','CREATE INDEX','DROP INDEX','CREATE VIEW','ALTER VIEW','DROP VIEW') collate utf8_bin default NULL,&lt;br /&gt;PRIMARY KEY  (`db_name`,`table_name`,`version`)&lt;br /&gt;) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This table layout based on a proposal by a SF feature requester. I am not sure if it is a good idea to use "set" as datatype (it's not SQL standard), but for a first version I will use it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-5018361554377608681?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/5018361554377608681/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/06/modelling-pmatracking.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/5018361554377608681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/5018361554377608681'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/06/modelling-pmatracking.html' title='Modelling pma_tracking'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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-8686536047133768324.post-4419184690386156758</id><published>2009-05-01T12:51:00.000-07:00</published><updated>2009-05-01T13:02:17.530-07:00</updated><title type='text'>Viewing the code...</title><content type='html'>I am very happy that my proposal was accepted by Google and the phpMyAdmin team. I prepared my Eclipse installation and checked out the source code from the subversion repository. First I have to find out which existing libraries and templates I can use for the new functionalities. You will hear from me soon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8686536047133768324-4419184690386156758?l=trackingmech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trackingmech.blogspot.com/feeds/4419184690386156758/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://trackingmech.blogspot.com/2009/05/viewing-code.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/4419184690386156758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8686536047133768324/posts/default/4419184690386156758'/><link rel='alternate' type='text/html' href='http://trackingmech.blogspot.com/2009/05/viewing-code.html' title='Viewing the code...'/><author><name>Alexander</name><uri>http://www.blogger.com/profile/00804602465627761983</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></feed>
