Georg Berky

Hi, my name is Georg Berky. I have worked as a student assistant and TA for the Chair of Databases and Information Systems from winter 2003/04 until summer 2010.
Back then my first job had been  implementing a test lab for P-News to evaluate the effect of ontological query relaxation and to improve the editor for Hasse diagrams.


After finishing my pre-diploma and until spring 2010 I have worked as a TA for Database Systems 1, Search Engines and Oracle Database Programming.

I finished my diploma thesis bearing the title "Cost-based optimization of partial Preference SQL query evaluation on SQL database systems" in December 2009.

contact me:

  • real world: room 2054, new computer science faculty

  • email: email_berky

  • jabber: jabber_berky

  • twitter:  @dbgezwitscher (in German, contact me if you want tweets in English)

for myself:

 SQL syntax descriptions in BNF



My active tickets
RecentChanges

Areas of interest:

  • PSQL Parser
  • Implementation of new preference constructors
  • the PSQL query tree
  • cost-based PSQL query optimization
  • SQL92 implementation details
  • database system internals
  • mobile database systems and development for embedded devices

pages I contributed to

ExecutePSQL
GetQuery
How to get used to PSQL code
How to create a test database with lots of tuples
CostBasedOptimizer
DataConnector
ColumnSet
PSQL Parser


weekly Agenda

Week 19 - 23

  • fix bug #156 (ORDER BY refactoring and projection issue)
  • fix GROUP BY bug: #167 http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
  • implement HAVING keyword: #159 http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
  • finish DBS dialect abstraction: #157 http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • do final checks where other DBS type checks occur in the code http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
  • finish PostgreSQL DBC: #162
    • figure out how to access statistics tables http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • construct statistics data queries and implement into DBC http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Week 15 - 18

  • continue work on GROUP BY and aggregate functions: #151
    • parser http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • clean up parser code and implement parser logger to speed up future work: #152 http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • add CUSTOM [ 'class name' ](column) option http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • tree builder http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • add GROUPBY node above projection node in tree builder's callback method http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • java classes
      • implement GROUPBY query tree node class http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement aggregator/groupby cursor class http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement other aggregation functions http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • handle COUNT(*) properly http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
  • Work on DROP TABLE bug: #155 that's #157 now

Week 14

  • fix TEMPORARY TABLE bug #150 http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
  • work on GROUP BY and aggregate functions #151
    • aggregation cursors exist in XXL already
    • grouping cursors exist in XXL already
      • complicated and hard to use

Week 13

  • work on SELECT/INSERT issue #148 http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • wrongly assumed this was a CREATE TABLE issue before http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • column order is correct, verified by SQLDeveloper http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • check parser http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • check tree builder http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • check query tree node http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • problem was caused by iterator() method of ColumnSet. See ticket #17 for details.

Week 12

Week 11

  • implement ORDER BY
    • Parser http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • TreeBuilder
      • implement OrderElement class http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement order element stack http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • make callback methods work http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement ORDER BY in Projection node, similar to distinc, only apply extra cursor if in root node http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • Code http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Week 10

  • fix column-relation association caching issue http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Week 9

  • fix bug in INSERT INTO
    • find what's causing the ArrayIndexOutOfBounds? exception http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • find where the negative index is coming from http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • find where the wrong column names in the RelExpColumn field is coming from http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • trace back where the misplaced RelExpColumn on the stack is coming from

Week 8

  • implement CREATE TABLE with subqueries http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • modify parser to accept subqueries http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • modify tree builder to create node and attach child node http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • test getQuery() http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
  • implement INSERT INTO with subqueries http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • parser http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • tree builder http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • check whether subtree gets attached properly http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • node class http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • test node class http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Week 6 & 7

  • fix urgent Bug in LESS for Markus Endres
    • check open() calls http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • test using other evaluation algorithms (BNL, Hexagon) http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • build test lab http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • find logical bugs in implementation

Week 5 & 6

  • implement INSERT INTO with subqueries
    • parser http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • tree builder
    • node class

Week 3 & 4

  • assistant
    • UNION/UNION ALL
      • implement UNION cursor methods http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement UNION ALL cursor methods http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • read SQL standard and solve alias vs. real column name confusion http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • let Relation class help ColumnSet with retrieving the datatypes http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement UNION ALL in parser http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement CORRESPONDING BY deferred

Week 2

  • assistant
    • SQL UNION
      • better method to ensure compatibility of attributes http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • find efficient ways to retrieve SQL datatypes in one query where possible
      • implement CORRESPONDING BY if supported

Week 1

  • assistant
    • merge code with HEAD version http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • test EXPLICIT with JGraphT and Object instead of String http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • preference selectivity for RANKED http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • preference selectivity for SEMIPARETO http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • cost function for SortMergeJoinWrapper http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • selectivity for RelExpMinMax http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Weeks 47 - 53

  • thesis:
    • write program to create appropriate databases for testing http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • do evaluation of query execution times http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • make fancy gnuplot diagrams http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • write down evaluation results and add to thesis paper http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • port selection of best query tree to PSQL's query optimizer http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Week 46

  • thesis:
    • test PSROp node http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • test with multiple relations http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • test with additional preferences in the tree http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Week 45

  • thesis:
    • fix "array index out of bounds" problem http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • edit optimizer rule match() and executeOperation() http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • implement recursive query construction method as discussed with Markus Endres
      • implement recursive canExecuteOnDBS() method http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • check Oracle SQL syntax diagrams, check how binary operators work http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • start to implement recursive query construction
  • assistant:
    • SQL LIKE for PSQL

Week 44

Week 43

  • thesis:
    • implement executeOperation() method for optimizer rule
      • first test successful, test more :-)

    • add execution cost field to Cost class and update getCost() method
      • cancelled because of comparison problems (PSQL costs vs. Oracle costs)

    • continue writing the thesis paper if sufficient time

Week 42

I hope the fancy number will make this week yield new answers :-).

  • thesis:
    • implement new wrapper class for Projection, Selection, Relation and Join http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • analyzed how getQuery works and wrote a Wiki page for it: GetQuery http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement getQuery() method: tested, works http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

    • implement optimizer rule which transforms existing query tree nodes into the new node type
      • implement match() method http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • implement executeOperation() method: still buggy, but general approach seems to be good

    • computation costs:
      • refactor getQuery() in Relation: create new method yielding the query string http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
      • enable further measuring of execution costs via EXPLAIN PLAN on Oracle if sufficient time

    • continue writing the thesis paper if sufficient time
  • assistant work:
    • EXPLICIT: implement free of cycles test http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png
    • LAYERED: implement disjoint sets test http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/10px-Yes_check.svg.png

Week 41

  • thesis:
    • Gazed upon Trac in awe :-)
    • Chapter 2: turned bullets into prose
    • integrated Markus' feedback
    • thought about new node class for the query tree
  • assistant work:
    • DUAL
    • LINEARSUM
    • CONTAINS (regex),
    • documented ExecutePSQL

Attachments