This section is not intended to be a course of the SQL language. Therefore, the focus will be put on the minimal set of differences that you must know in order to write queries properly.
A pure JavaScript database
SQL Cloud is a 100% JavaScript database running on the browser (Chrome, Safari, Edge, Firefox…) and any device (PC, tablet, mobile..).
It is read-only at the moment (no INSERT, UPDATE, DELETE).
The engine and the full data model (tables, indexes, etc.) are created when the HTML page is opened and everything is destroyed when the page is closed.
All the users run their own SQL Cloud database instance fully isolated from the rest.
All tables have no data and they are populated in real-time fetching data over the Atlassian’s Jira public REST API to answer the users' queries.
Show tables and columns
Explore the data model with these commands:
show tables
show columns from <table>
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Run the statement above to list all the tables available in the database model And
to display the column and their metadata of a given table: |
Strings vs aliases
Like in the rest of the database implementations a string is enclosed between single quotes.
...
Expand | |||||
---|---|---|---|---|---|
| |||||
|
Table, column and function names are case sensitive
Use Uppercase names
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
will work. Whereas
will not. |
KEY is a reserved word
As other database vendors, SQL Cloud does have reserved words that must be surrounded with accents or square brackets
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
No schema support
Many database vendors group tables into schemas (i.e.: PUBLIC). SQL Cloud does not support schemes.
Expand | ||
---|---|---|
| ||
We use the following convention for the table names:
|
Reckless queries (AKA Full scans) are not allowed
Many times, users write reckless queries that requite to scan/fetch all the records on a table to be answered.
Expand | |||||
---|---|---|---|---|---|
| |||||
This can cause series reliability problems and compromise the Jira server instance performance. A clear example is:
What if there are millions of records/issues? Therefore many queries performing full scans on tables are aborted by the SQL Cloud engine by raising a Full Scan error: Since SQL Cloud is a wrapper for the Atlassian’s Jira public REST API, it relies on the underlaying Atlassian’s API for that. In other words, if the Jira REST API allows querying for all the results (i.e.: PROJECTs), then SQL Cloud will allow it too. Otherwise (i.e.: ISSUEs) not. In this case the indexed column names are displayed (JQL and ID in the example above). An indexed column in SQL Cloud corresponds to a filter parameter required by the Atlassian’s Jira public REST API to fetch data from Jira. For instance, you can search for issues in Jira by ID or by JQL query. In general, the SQL Cloud is an straightforward implementation of the Jira REST API and inherits the same security and the rest of the constraints. |
WHERE conditions are not the same as JOIN conditions
In SQL Cloud there is a big difference about how values are provided for dynamic table resolution (fetching data from Jira to populate them).
Understating this is very important to write working queries that perform optimally.
Expand | ||
---|---|---|
| ||
These are the rules for conditions resolution:
In other words: (order of execution)
NOTE: A lot of database vendors work in a different way as they support extra query optimizations based on indexes, etc. They analyze the query syntax and some optimizations are applied in a sort of query internal re-writing before the execution starts. Thus, the users do not know the exact way how their queries will be really resolved and many of those database vendors provide an EXPLAIN command to show the real execution order to the user. In SQL Cloud, queries are executed in the exact order described above. It is for that reason that is very important to understand the right execution order of all the conditions (WHERE and JOINS). This might result confusing for a lot of users used to popular databases supporting those internal re-writing optimizations and expecting the same behavior here. In fact, the SQL specs are agnostic in regard to how the engine will resolve the query since it is supposed that tables have records which is not true in SQL Cloud as all the bales are empty an populated in real time to answer the users' queries. Therefor users must instruct the engine about the right order to populate the tables, via the SQL query syntax. |
Aggregation conditions do not support aliases
Expand | |||||||
---|---|---|---|---|---|---|---|
| |||||||
Please pay attention to the having condition: count(*) > 2
Works! In this query the condition has been modified to uses column aliases: `Num. comments` > 2
Not works! |