Quantcast
Channel: Philipp Salvisberg's Blog
Browsing index pages (130 articles)

Image may be NSFW.
Clik here to view.

Implicit Outer Joins in Join-to-One: Feature or Flaw?

Background As you probably know, I’m maintaining a parser for grammars used in SQL files for Oracle AI Database and PostgreSQL. As a result, I check for new statements and clauses in every version of...

View Article


Image may be NSFW.
Clik here to view.

The Checkbox That Disables TLS

Introduction The dbLinter clients include a new setting named Allow Insecure TLS. It is disabled by default. As a result, all REST API calls verify the TLS certificate and hostname. The setting allows...

View Article


The Return of SQLcl’s SCRIPT Command

Introduction The script command was introduced with SQLcl 4.2. It is based on JSR 223, the Java Scripting API, and makes it possible to run JavaScript from SQLcl. This adds client-side control flow,...

View Article

Image may be NSFW.
Clik here to view.

Detecting Security Vulnerabilities With the APEXlang Parser

Introduction A parser for the APEXlang grammar enables the development of tools beyond the scope of the APEXlang compiler included in SQLcl, SQL Developer for VS Code, and ORDS. These tools can...

View Article

Image may be NSFW.
Clik here to view.

Syntax Diagrams for APEXlang

Introduction The APEXlang API Reference documentation went live a few days ago. You can also download the APEXlang EBNF grammar. In this post, Kris Rice explains the value of having an EBNF. Since the...

View Article


Image may be NSFW.
Clik here to view.

Using SQL Assertions to Enforce Temporal Data Integrity

Introduction More than twelve years ago, I described the multi-temporal features of Oracle Database in this blog post. In the conclusion, I wrote that I missed a temporal DML API, temporal integrity...

View Article

Enforcing Acyclic Hierarchies With SQL Assertions

Introduction Referential integrity constraints have been available since version 7 of the Oracle Database. While these constraints ensure that referenced rows exist, they cannot express more complex...

View Article

Image may be NSFW.
Clik here to view.

Fighting Bad PL/SQL & SQL with VS Code

The success of a project or product depends largely on the quality of the code. But how can I improve security, maintainability or performance? More importantly, how can I prevent code with quality...

View Article


Is SYSDATE Deterministic? #JoelKallmanDay

TL;DR No, SYSDATE is not deterministic. However, it behaves very similarly to a deterministic function within an Oracle Database SQL statement. Background On a customer site, we used faketime on the...

View Article


Image may be NSFW.
Clik here to view.

Outer Joining With ANSI SQL-89 and SQL-92

Introduction I recently implemented a quick fix for the rule G-3130 to transform queries to ANSI SQL-92 syntax. One of the challenges was to handle Oracle’s outer-join syntax (+). In ANSI SQL-89, join...

View Article

Image may be NSFW.
Clik here to view.

Installing SQL Developer in IDEs Implementing the VS Code Extension API

Introduction The Oracle SQL Developer team is working on bringing the essential functionality built over the last 20 years in the classic SQL Developer IDE—a JDeveloper extension running as a...

View Article

dbLinter Rules Repository

Introduction Today I proudly announce that the Joint Venture between United Codes and Grisselbav released the initial version of the dbLinter Rules Repository website. This is the first publicly...

View Article

Wrapping and Unwrapping PL/SQL

Introduction Today I released a PL/SQL Unwrapper for VS Code. You can find it in the VS Code Marketplace, along with instructions on how to use it. It’s super easy and works the same way as the...

View Article


Avoid Implicit Type Conversion in JSON Access

Introduction Before comparing two values, the Oracle Database automatically ensures that both values have the same data type. It converts one of the values to match the data type of the other value....

View Article

Evolution of a SQL Domain for Semantic Versioning

1. Introduction In my current project, I use an SQL domain to implement the formatting and precedence rules for Semantic Versioning. I started with a simple implementation covering only the most basic...

View Article


Image may be NSFW.
Clik here to view.

PL/SQL vs. JavaScript in the Oracle Database 23ai #JoelKallmanDay

JavaScript is the first language supported by the Multilingual Engine (MLE) in Oracle Database 23ai. Having additional languages in the Oracle Database allows us to use existing libraries within the...

View Article

How Many Bytes Are in an Emoji?

What Is a Byte? A byte is made up of 8 bits. And in the old days, it represented a character. If you use a single-byte character set such as WE8MSWIN1252, WE8ISO8859P15 or similar, it still is. What...

View Article


Image may be NSFW.
Clik here to view.

IslandSQL Final Episode 10: Parsing PL/pgSQL

Introduction IslandSQL is a parser for SQL files targeting OracleDB or PostgreSQL. The parser is available on Maven Central and can process SQL*Plus, SQLcl or psql statements besides SQL statements....

View Article

Image may be NSFW.
Clik here to view.

IslandSQL Episode 9: GraphQL, JSON and Flexible Schemas With Duality Views

Introduction In the last episode, we looked at some new features in Oracle Database 23.4. The IslandSQL grammar now covers all statements that can contain static DML statements and code in PL/SQL and...

View Article

IslandSQL Episode 8: What’s New in Oracle Database 23.4?

Introduction In the last episode, we looked at some features in PostgreSQL which I miss in the Oracle Database. The IslandSQL grammar now covers PL/SQL and the related DDL statements. The...

View Article
Browsing index pages (130 articles)


Latest Images