Follow us:
  • Follow us on Facebook
  • Follow us on Twitter
  • Follow us on Linked In
Student Login

  New Student Signup  |  Lost Password

S'ware Eng - investigate SQL code for static analysis of PL/SQL programs

Oracle Labs #4

Return to List

Open Posted: 11 May 17. Closes: 30 May 17 Available: Semester 2 (Jul - Nov)

Semester 2 2017 + summer vacation + Semester 1 2018 

Note: students must be able to enrol in thesis/project spread across Semester 2 + 1; as well available whole of summer vacation. These are requirements for this project.

This project will suit final year / Masters students in Software Engineering / Computer Science / IT - with strong SQL query and RDBMS database skills; understanding of LLVM framework; and a very solid understanding of data structures and algorithms (Grade 6 or 7 in relevant subject/s). A strong interest in Program Analysis and software engineering principles is also needed.

The successful applicant will receive a $9,000 scholarship + academic credit (24cps - QUT; 4 units - UQ).  You must be available to work on the project onsite for 2 days/week during semester 2 + 1; plus 5 days/week over the entire summer vacation period.

APPLICANTS NOTE: you must include your academic transcript/s inside your resume (undergrad + Masters if applicable) - before Oracle Labs will consider your application. Also include your student number.

Location: Brisbane CBD QLD
Categories: Information Technology, Electrical Engineering

Project Background / Description

Oracle Labs is currently developing static analysis for the detection of bugs and vulnerabilities in PL/SQL code.  PL/SQL is a procedural language that is tightly integrated with the database SQL engine. Praline is based on the Parfait static analyser, and uses LLVM for the intermediate representation of program code. As part of this project, we are interested in exploring the interaction between the procedural PL/SQL and the declarative SQL, in order to trace the flow of data through both languages.

For this project, we would like to implement an initial translation of SQL into LLVM (using existing SQL parsers), develop a cross-language call graph between SQL + PL/SQL, and explore approaches for effective static resolution of SQL features that feed back to PL/SQL, such as dynamic SQL statements, function-based indexes, and triggers.


Oracle offers a comprehensive and fully integrated stack of cloud applications, platform services, and engineered systems.  With more than 400,000 customers—including 100 of the Fortune 100—in more than 145 countries, Oracle provides a complete technology stack both in the cloud and in the data centre.

Oracle’s industry-leading cloud-based and on-premises solutions give customers complete deployment flexibility and unmatched benefits including application integration, advanced security, high availability, scalability, energy efficiency, powerful performance, and low total cost of ownership.

For more information about Oracle, visit

Oracle Labs

Oracle Labs is the research division of Oracle.  It focuses on applied research to produce new technologies of interest to the company.

Oracle Labs Australia (, based in Brisbane, specialises in Program Analysis in a variety of domains, including bug-checking, productivity tools, security analysis, testing, and more. The Brisbane team hit the headlines with its research on static code analysis that lead to scalable and precise bug-checking algorithms embedded in the Parfait tool.

How Oracle helps CEED students

We link you up with an experienced supervisor on the Brisbane team. They will work closely with you, helping you grow your skills-really practical skills you can put to work in real-world situations.

Objectives / Tasks / Project Outcomes

  • Parsing SQL code in SQL*Plus scripts and PL/SQL programs using existing SQL parsers
  • Extending the in-house PL/SQL translator to translate SQL commands
  • Designing and implementing a static analysis in Parfait/LLVM for a basic cross-language call graph construction
  • Extending the static analysis with dynamic features like bind variables, dynamic SQL statements, function-based indexes and triggers
  • Creating a set of unit-tests that comprehensively test all the implemented features
  • Write a detailed report on work done
  • Give a presentation to the group on work done

Skills / Experience Required

  • Strong understanding of SQL querying and RDBMS databases
  • An understanding of LLVM framework
  • Excellent academic results
  • Excellent problem-solving skills
  • Strong interest in Program Analysis and software engineering principles
  • Strong understanding of data structures and algorithms
  • Experience with Unix-based systems
  • Ability to work independently and in small groups

Return to List

Subscribe to e-newsletter