Skip to content

Commit b091641

Browse files
committed
parsing temporary table
1 parent 4922251 commit b091641

File tree

8 files changed

+50
-20
lines changed

8 files changed

+50
-20
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[![jSQL Logo](http://i.imgur.com/VQlJKOc.png)](http://pamblam.github.io/jSQL/)
22

3-
jSQL (Official) - Version 3.3.16 - *Now available without a prescription!*
3+
jSQL (Official) - Version 4.0.1 - *Now available without a prescription!*
44

55
[![npm version](https://badge.fury.io/js/jsql-official.svg)](https://badge.fury.io/js/jsql-official) [![Build Status](https://travis-ci.org/Pamblam/jSQL.svg?branch=master)](https://travis-ci.org/Pamblam/jSQL) [![Inline docs](http://inch-ci.org/github/Pamblam/jSQL.svg?branch=master)](https://github.com/Pamblam/jSQL/wiki) [![Coverage Status](https://coveralls.io/repos/github/Pamblam/jSQL/badge.svg?branch=master)](https://coveralls.io/github/Pamblam/jSQL?branch=master)
66

jSQL.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* jsql-official - v3.3.16
2+
* jsql-official - v4.0.1
33
* A persistent SQL database.
44
* @author Rob Parham
55
* @website http://pamblam.github.io/jSQL/
@@ -1284,13 +1284,16 @@ jSQLLexer.token_types = [
12841284
{pattern: /default(?=[\s(`,]|$)/gi,
12851285
type: 'KEYWORD',
12861286
name: "DEFAULT"},
1287+
{pattern: /table(?=[\s(`,]|$)/gi,
1288+
type: 'KEYWORD',
1289+
name: "TABLE"},
12871290

12881291

12891292
// DIRECTIVEs
1290-
{pattern: /create table/gi,
1293+
{pattern: /create(?=[\s(`,]|$)/gi,
12911294
type: 'DIRECTIVE',
1292-
name: "CREATE TABLE"},
1293-
{pattern: /insert/gi,
1295+
name: "CREATE"},
1296+
{pattern: /insert(?=[\s(`,]|$)/gi,
12941297
type: 'DIRECTIVE',
12951298
name: "INSERT"},
12961299
{pattern: /delete from/gi,
@@ -1299,10 +1302,10 @@ jSQLLexer.token_types = [
12991302
{pattern: /drop table/gi,
13001303
type: 'DIRECTIVE',
13011304
name: "DROP TABLE"},
1302-
{pattern: /update/gi,
1305+
{pattern: /update(?=[\s(`,]|$)/gi,
13031306
type: 'DIRECTIVE',
13041307
name: "UPDATE"},
1305-
{pattern: /select/gi,
1308+
{pattern: /select(?=[\s(`,]|$)/gi,
13061309
type: 'DIRECTIVE',
13071310
name: "SELECT"},
13081311

@@ -1351,7 +1354,7 @@ function jSQLParseQuery(query){
13511354

13521355
var directive = tokens.shift();
13531356
switch(directive.name){
1354-
case "CREATE TABLE":
1357+
case "CREATE":
13551358
return jSQLParseCreateTokens(tokens);
13561359
break;
13571360
case "INSERT":
@@ -1397,10 +1400,19 @@ function jSQLParseCreateTokens(tokens){
13971400
token,
13981401
if_not_exists = false,
13991402
keys = [],
1400-
params = {};
1403+
params = {},
1404+
temp = false;
14011405

14021406
token = tokens.shift();
14031407

1408+
if(token.type === 'KEYWORD' && token.name === 'TEMPORARY'){
1409+
temp = true;
1410+
token = tokens.shift();
1411+
}
1412+
1413+
if(token.name !== 'TABLE') return _throw(new jSQL_Parse_Error(token, "TABLE"));
1414+
token = tokens.shift();
1415+
14041416
if(token.type === "QUALIFIER" && token.name === "IF NOT EXISTS"){
14051417
if_not_exists = true;
14061418
token = tokens.shift();
@@ -1504,6 +1516,7 @@ function jSQLParseCreateTokens(tokens){
15041516
}
15051517

15061518
var query = jSQL.createTable(params, keys);
1519+
if(temp) query.temporary();
15071520
if(if_not_exists) query.ifNotExists();
15081521

15091522
return query;
@@ -2824,7 +2837,7 @@ function jsql_import(dump){
28242837
}
28252838

28262839
return {
2827-
version: "3.3.16",
2840+
version: "4.0.1",
28282841
tables: {},
28292842
query: jSQLParseQuery,
28302843
createTable: createTable,

jSQL.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jsql-official",
3-
"version": "3.3.16",
3+
"version": "4.0.1",
44
"description": "A persistent SQL database.",
55
"main": "jSQL.min.js",
66
"directories": {

src/lexer/token_types.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,16 @@ jSQLLexer.token_types = [
149149
{pattern: /default(?=[\s(`,]|$)/gi,
150150
type: 'KEYWORD',
151151
name: "DEFAULT"},
152+
{pattern: /table(?=[\s(`,]|$)/gi,
153+
type: 'KEYWORD',
154+
name: "TABLE"},
152155

153156

154157
// DIRECTIVEs
155-
{pattern: /create table/gi,
158+
{pattern: /create(?=[\s(`,]|$)/gi,
156159
type: 'DIRECTIVE',
157-
name: "CREATE TABLE"},
158-
{pattern: /insert/gi,
160+
name: "CREATE"},
161+
{pattern: /insert(?=[\s(`,]|$)/gi,
159162
type: 'DIRECTIVE',
160163
name: "INSERT"},
161164
{pattern: /delete from/gi,
@@ -164,10 +167,10 @@ jSQLLexer.token_types = [
164167
{pattern: /drop table/gi,
165168
type: 'DIRECTIVE',
166169
name: "DROP TABLE"},
167-
{pattern: /update/gi,
170+
{pattern: /update(?=[\s(`,]|$)/gi,
168171
type: 'DIRECTIVE',
169172
name: "UPDATE"},
170-
{pattern: /select/gi,
173+
{pattern: /select(?=[\s(`,]|$)/gi,
171174
type: 'DIRECTIVE',
172175
name: "SELECT"},
173176

src/parser/jSQLParseCreateTokens.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,19 @@ function jSQLParseCreateTokens(tokens){
44
token,
55
if_not_exists = false,
66
keys = [],
7-
params = {};
7+
params = {},
8+
temp = false;
89

910
token = tokens.shift();
1011

12+
if(token.type === 'KEYWORD' && token.name === 'TEMPORARY'){
13+
temp = true;
14+
token = tokens.shift();
15+
}
16+
17+
if(token.name !== 'TABLE') return _throw(new jSQL_Parse_Error(token, "TABLE"));
18+
token = tokens.shift();
19+
1120
if(token.type === "QUALIFIER" && token.name === "IF NOT EXISTS"){
1221
if_not_exists = true;
1322
token = tokens.shift();
@@ -111,6 +120,7 @@ function jSQLParseCreateTokens(tokens){
111120
}
112121

113122
var query = jSQL.createTable(params, keys);
123+
if(temp) query.temporary();
114124
if(if_not_exists) query.ifNotExists();
115125

116126
return query;

src/parser/jSQLParseQuery.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function jSQLParseQuery(query){
1111

1212
var directive = tokens.shift();
1313
switch(directive.name){
14-
case "CREATE TABLE":
14+
case "CREATE":
1515
return jSQLParseCreateTokens(tokens);
1616
break;
1717
case "INSERT":

test/test6.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ jSQL.load(()=>{
1010
]}).temporary().execute();
1111
expect(!!jSQL.tables.myTable).to.be.true;
1212
});
13+
it('Testing temp table parser', function(){
14+
jSQL.query("create temporary table fartypoops (id int, name varchar)").execute();
15+
expect(jSQL.tables.fartypoops.isTemp).to.be.true;
16+
});
1317
});
1418
});
1519

0 commit comments

Comments
 (0)