Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
7f4b2da
Update antlr gramma
akrambek Nov 12, 2024
84eacb3
Refactor scripts for zstream
akrambek Nov 14, 2024
a5f3121
Remove redundant files
akrambek Nov 14, 2024
cfe8ade
Remove redunant files
akrambek Nov 14, 2024
519279b
Fix typo
akrambek Nov 14, 2024
b60ee1e
Replace weather with commands
akrambek Nov 14, 2024
912bd26
Remove redundant exclude
akrambek Nov 14, 2024
1085600
WIP
akrambek Nov 25, 2024
7bc5c5d
Merge branch 'develop' into feature/z-catalog
akrambek Nov 25, 2024
4039029
Revert back the change
akrambek Nov 25, 2024
8a5ace9
Checkpoint zview
akrambek Nov 26, 2024
92930f8
Stable state
akrambek Nov 26, 2024
463d426
WIP
akrambek Nov 26, 2024
bed9c1c
WIP
akrambek Nov 26, 2024
586ea67
WIP
akrambek Nov 26, 2024
ac7758d
WIP
akrambek Nov 26, 2024
8372f5c
WIP
akrambek Nov 26, 2024
3dc8c3a
WIP
akrambek Nov 26, 2024
478be8f
WIP
akrambek Nov 27, 2024
d1b247c
WIP
akrambek Nov 27, 2024
546473c
Checkpoint
akrambek Nov 27, 2024
99b7216
Remove uncessary files
akrambek Nov 27, 2024
f6435a3
WIP
akrambek Nov 27, 2024
4bbc4aa
WIP
akrambek Nov 28, 2024
8971b87
WIP
akrambek Nov 28, 2024
9dee812
WIP
akrambek Nov 28, 2024
cc6c80e
WIP
akrambek Nov 28, 2024
212872d
Change user
akrambek Nov 28, 2024
21e6963
Checkpoint
akrambek Nov 28, 2024
e4377a0
Update the script
akrambek Nov 28, 2024
b052c58
WIP
akrambek Nov 29, 2024
5401488
WIP
akrambek Nov 29, 2024
7fc64be
WIP
akrambek Nov 30, 2024
5a286cc
WIP
akrambek Dec 1, 2024
38f7371
WIP
akrambek Dec 1, 2024
d1270a1
WIP
akrambek Dec 1, 2024
eb0bdbb
WIP
akrambek Dec 2, 2024
1fea51d
WIP
akrambek Dec 2, 2024
e8f5e7e
Checkpoint
akrambek Dec 2, 2024
48cfbf7
Merge branch 'feature/z-catalog' into feature/ztable
akrambek Dec 2, 2024
13fcdb6
WIP
akrambek Dec 2, 2024
7d8c68d
WIP
akrambek Dec 2, 2024
8e199ba
WIP
akrambek Dec 3, 2024
1042c68
WIP
akrambek Dec 4, 2024
2e53b82
WIP
akrambek Dec 4, 2024
7614312
Checkpoint
akrambek Dec 4, 2024
b16a5e8
Checkpoint
akrambek Dec 5, 2024
97314ac
WIP
akrambek Dec 5, 2024
7c5db96
Fix casting
akrambek Dec 5, 2024
ef9077a
WIP
akrambek Dec 6, 2024
d47d74f
Ignore case sensitivity
akrambek Dec 6, 2024
a45c87c
WIP
akrambek Dec 9, 2024
8a9305b
WIP
akrambek Dec 9, 2024
cd63668
Fix remaining issues
akrambek Dec 9, 2024
93126b7
WIP
akrambek Dec 10, 2024
17fdc27
Fix stylecheck errors
akrambek Dec 10, 2024
0bbab15
Merge branch 'feature/z-catalog' into feature/ztable
akrambek Dec 10, 2024
9f606b4
WIP
akrambek Dec 11, 2024
34f93bf
WIP
akrambek Dec 13, 2024
2a4815f
Merge branch 'develop' into feature/ztable
akrambek Dec 13, 2024
49a7546
WIP
akrambek Dec 14, 2024
e32253c
WIP
akrambek Dec 14, 2024
da9a880
WIP all marros
akrambek Dec 16, 2024
e8324c7
WIP remove statements
akrambek Dec 16, 2024
e5532e5
WIP
akrambek Dec 16, 2024
5546db9
WIP
akrambek Dec 16, 2024
c4ad8f5
WIP
akrambek Dec 16, 2024
57fb1d5
WIP
akrambek Dec 16, 2024
e87bc76
WIP
akrambek Dec 16, 2024
2cff032
WIP
akrambek Dec 17, 2024
6f9409b
WIP
akrambek Dec 17, 2024
9928d02
WIP
akrambek Dec 17, 2024
bd9e9c1
Checkpoint
akrambek Dec 17, 2024
e923e86
Merge branch 'develop' into feature/ztable
akrambek Dec 17, 2024
f26c2cc
WIP
akrambek Dec 17, 2024
fa2197a
WIP
akrambek Dec 17, 2024
11f3e09
WIP
akrambek Dec 17, 2024
661a4bf
Catch exception
akrambek Dec 17, 2024
bf4ee6c
Fix tests
akrambek Dec 17, 2024
41be9ea
WIP
akrambek Dec 17, 2024
56e4d34
Fix checkstyle
akrambek Dec 17, 2024
80103c0
WIP
akrambek Dec 17, 2024
1da5fa4
WIP
akrambek Dec 17, 2024
10801a1
WIP
akrambek Dec 18, 2024
d45ae92
WIP
akrambek Dec 18, 2024
ec564d1
WIP
akrambek Dec 18, 2024
5da2130
WIP
akrambek Dec 18, 2024
469afdd
Terminate transition on error
akrambek Dec 18, 2024
b63aef5
Terminate state on error
akrambek Dec 18, 2024
16c95fa
Merge branch 'feature/ztable' into feature/actual-zstream
akrambek Dec 18, 2024
f67b6ca
WIP
akrambek Dec 18, 2024
cf02955
Checkpoint show zfunctions
akrambek Dec 19, 2024
2145d26
Merge branch 'develop' into feature/actual-zstream
akrambek Dec 19, 2024
f51d6b8
WIP
akrambek Dec 19, 2024
c720743
WIP
akrambek Dec 19, 2024
275f35e
WIP
akrambek Dec 19, 2024
de7d310
WIP till morning
akrambek Dec 19, 2024
477e950
WIP
akrambek Dec 20, 2024
ceea46f
WIP
akrambek Dec 22, 2024
b8888e2
Add test
akrambek Dec 23, 2024
c80aaca
WIP
akrambek Dec 24, 2024
c88fb01
Support SHOW ZSTREAMS
akrambek Dec 24, 2024
4222104
Checkpoint
akrambek Dec 24, 2024
2f1ff78
Merge branch 'develop' into feature/actual-zstream
akrambek Dec 24, 2024
44b7d64
WIP
akrambek Dec 25, 2024
a56c07a
WIP
akrambek Dec 26, 2024
767c4c1
WIP
akrambek Dec 26, 2024
a444597
WIP
akrambek Dec 26, 2024
604ca67
Clean up
akrambek Dec 26, 2024
491dec0
Remove error printing
akrambek Dec 26, 2024
de5b924
disable logging
akrambek Dec 26, 2024
b9e7f11
WIP
akrambek Dec 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
WIP
  • Loading branch information
akrambek committed Dec 22, 2024
commit ceea46f8f3f0e7f471585d9970a64d24a0e0feb9
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ options {

Dollar: '$';

ZFUNCTION_S: '$$';

OPEN_PAREN: '(';

CLOSE_PAREN: ')';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2043,9 +2043,8 @@ opt_nulls_order
;

createzfunctionstmt
: CREATE opt_or_replace ZFUNCTION func_name func_args_with_defaults (
RETURNS (func_return | TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN)
)? createfunc_opt_list
: CREATE ZFUNCTION func_name func_args_with_defaults
RETURNS TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN LANGUAGE SQL_P AS ZFUNCTION_S selectstmt SEMI ZFUNCTION_S
;

createfunctionstmt
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import io.aklivity.zilla.runtime.binding.pgsql.parser.PostgreSqlParserBaseListener;
import io.aklivity.zilla.runtime.binding.pgsql.parser.model.CreateZfunction;
import io.aklivity.zilla.runtime.binding.pgsql.parser.model.FunctionArgument;
import io.aklivity.zilla.runtime.binding.pgsql.parser.model.Select;

public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener
{
Expand All @@ -33,22 +34,46 @@ public class SqlCreateZfunctionListener extends PostgreSqlParserBaseListener
private final List<FunctionArgument> arguments;
private final TokenStream tokens;

private final List<String> columns = new ArrayList<>();

private String table;
private String whereClause;
private String groupByClause;
private String orderByClause;
private String limitClause;
private String offsetClause;

private String schema;
private String name;
private String asFunction;
private String language;

public SqlCreateZfunctionListener(
TokenStream tokens)
{
this.returnTypes = new ArrayList<>();
this.arguments = new ArrayList<>();

this.columns.clear();

this.tokens = tokens;
}

public CreateZfunction zfunction()
{
return new CreateZfunction(schema, name, arguments, returnTypes, asFunction, language);
final Select select = new Select(
columns,
table,
whereClause,
groupByClause,
orderByClause,
limitClause,
offsetClause);

return new CreateZfunction(
schema,
name,
arguments,
returnTypes,
select);
}

@Override
Expand All @@ -57,10 +82,16 @@ public void enterRoot(
{
schema = null;
name = null;
asFunction = null;
language = null;
arguments.clear();
returnTypes.clear();

columns.clear();
table = null;
whereClause = null;
groupByClause = null;
orderByClause = null;
limitClause = null;
offsetClause = null;
}

@Override
Expand Down Expand Up @@ -92,16 +123,54 @@ public void enterTable_func_column(
}

@Override
public void enterFunc_as(
PostgreSqlParser.Func_asContext ctx)
public void enterTarget_list(
PostgreSqlParser.Target_listContext ctx)
{
ctx.target_el().forEach(c -> columns.add(c.getText()));
}

@Override
public void enterFrom_clause(
PostgreSqlParser.From_clauseContext ctx)
{
if (ctx.from_list() != null)
{
table = ctx.from_list().getText();
}
}

@Override
public void enterWhere_clause(
PostgreSqlParser.Where_clauseContext ctx)
{
whereClause = ctx.getText();
}

@Override
public void enterGroup_clause(
PostgreSqlParser.Group_clauseContext ctx)
{
groupByClause = ctx.getText();
}

@Override
public void enterSort_clause(
PostgreSqlParser.Sort_clauseContext ctx)
{
orderByClause = ctx.getText();
}

@Override
public void enterLimit_clause(
PostgreSqlParser.Limit_clauseContext ctx)
{
asFunction = ctx.getText();
limitClause = ctx.getText();
}

@Override
public void enterNonreservedword_or_sconst(
PostgreSqlParser.Nonreservedword_or_sconstContext ctx)
public void enterOffset_clause(
PostgreSqlParser.Offset_clauseContext ctx)
{
language = ctx.getText();
offsetClause = ctx.getText();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ public record CreateZfunction(
String name,
List<FunctionArgument> arguments,
List<FunctionArgument> returnTypes,
String asFunction,
String language)
Select select)
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* Copyright 2021-2024 Aklivity Inc
*
* Licensed under the Aklivity Community License (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the
* License at
*
* https://www.aklivity.io/aklivity-community-license/
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package io.aklivity.zilla.runtime.binding.pgsql.parser.model;

import java.util.List;

public record Select(
List<String> columns,
String table,
String whereClause,
String groupByClause,
String orderByClause,
String limitClause,
String offsetClause)
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -511,59 +511,41 @@ public void shouldParseShowZtables()
public void shouldParseCreateZfunctionWithTableReturnType()
{
String sql = """
CREATE ZFUNCTION send_payment_handler(
type VARCHAR,
user_id VARCHAR,
random VARCHAR,
amount DOUBLE PRECISION,
notes VARCHAR)
RETURNS TABLE(
type VARCHAR,
user_id VARCHAR,
request_id VARCHAR,
amount DOUBLE PRECISION,
notes VARCHAR)
LANGUAGE SQL AS $$
SELECT
CASE
WHEN balance >= amount THEN "PaymentSent"
ELSE "PaymentDeclined"
END AS type,
user_id,
request_id,
amount,
balance,
notes
FROM balance as b WHERE b.user_id = user_id;
$$
""";
CREATE ZFUNCTION send_payment_handler(
user_id VARCHAR,
amount DOUBLE PRECISION)
RETURNS TABLE(
event VARCHAR,
user_id VARCHAR,
amount DOUBLE PRECISION)
LANGUAGE SQL AS $$
SELECT
CASE
WHEN balance >= args.amount THEN "PaymentSent"
ELSE "PaymentDeclined"
END AS event,
args.user_id,
args.amount
FROM balance WHERE user_id = args.user_id;
$$
""";
CreateZfunction function = parser.parseCreateZfunction(sql);
assertNotNull(function);

assertEquals("send_payment_handler", function.name());
assertEquals(5, function.arguments().size());
assertEquals("type", function.arguments().get(0).name());
assertEquals(2, function.arguments().size());
assertEquals("user_id", function.arguments().get(0).name());
assertEquals("VARCHAR", function.arguments().get(0).type());
assertEquals("user_id", function.arguments().get(1).name());
assertEquals("VARCHAR", function.arguments().get(1).type());
assertEquals("random", function.arguments().get(2).name());
assertEquals("VARCHAR", function.arguments().get(2).type());
assertEquals("amount", function.arguments().get(3).name());
assertEquals("DOUBLE PRECISION", function.arguments().get(3).type());
assertEquals("notes", function.arguments().get(4).name());
assertEquals("VARCHAR", function.arguments().get(4).type());

assertEquals(5, function.returnTypes().size());
assertEquals("type", function.returnTypes().get(0).name());
assertEquals("amount", function.arguments().get(1).name());
assertEquals("DOUBLE PRECISION", function.arguments().get(1).type());

assertEquals(3, function.returnTypes().size());
assertEquals("event", function.returnTypes().get(0).name());
assertEquals("VARCHAR", function.returnTypes().get(0).type());
assertEquals("user_id", function.returnTypes().get(1).name());
assertEquals("VARCHAR", function.returnTypes().get(1).type());
assertEquals("request_id", function.returnTypes().get(2).name());
assertEquals("VARCHAR", function.returnTypes().get(2).type());
assertEquals("amount", function.returnTypes().get(3).name());
assertEquals("DOUBLE PRECISION", function.returnTypes().get(3).type());
assertEquals("notes", function.returnTypes().get(4).name());
assertEquals("VARCHAR", function.returnTypes().get(4).type());
assertEquals("amount", function.returnTypes().get(2).name());
assertEquals("DOUBLE PRECISION", function.returnTypes().get(2).type());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ write zilla:data.ext ${pgsql:dataEx()
write [0x00 0x02] # Field Count
[0x00 0x00 0x00 0x06] # Length
[0x63 0x69 0x74 0x69 0x65 0x73] # Data
[0x00 0x00 0x01 0x73] # Length
[0x00 0x00 0x01 0x80] # Length
"CREATE ZFUNCTION send_payment_handler(\n" # Data
" user_id VARCHAR,\n"
" amount DOUBLE PRECISION\n"
Expand All @@ -80,12 +80,12 @@ write [0x00 0x02] # Field Count
"LANGUAGE SQL AS $$\n"
" SELECT\n"
" CASE\n"
" WHEN balance >= amount THEN \"PaymentSent\"\n"
" WHEN balance >= args.amount THEN \"PaymentSent\"\n"
" ELSE \"PaymentDeclined\"\n"
" END AS event,\n"
" user_id,\n"
" amount,\n"
" FROM balance as b WHERE b.user_id = user_id;\n"
" args.user_id,\n"
" args.amount,\n"
" FROM balance WHERE user_id = args.user_id;\n"
"$$"
[0x00]

Expand Down
Loading