GithubHelp home page GithubHelp logo

bedorlan / priscilla Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 2.0 3.93 MB

PL/SQL to Python transcompiler

License: MIT License

Shell 0.22% Makefile 0.78% Python 22.56% ANTLR 76.45%
plsql python source-to-source migration translator transcompiler transpiler

priscilla's People

Contributors

bedorlan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

priscilla's Issues

Cursor for loop

I'm getting errors migrating a simple cursor for loop.
The setup is python 3.6 on rhel 7.6 with a virtual environment (venv), so that I could load the modules.
The source is:

DECLARE
cursor c1 is
select name
from employees
order by name;
BEGIN
for r1 in c1 loop
dbms_output.put_line(r1.name);
end loop;
END;
/

The output is:

(priscilla) [:/opt/git/priscilla ]$ make migrate
python3 lib/S2S.py /opt/git/priscilla/input/ccr.pkg /opt/git/priscilla/output/ccr.py
Traceback (most recent call last):
File "lib/S2S.py", line 37, in
main(sys.argv)
File "lib/S2S.py", line 23, in main
node = tree.accept(visitor)
File "./built/PlSqlParser.py", line 7324, in accept
return visitor.visitSql_script(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 43, in visitSql_script
body = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 7541, in accept
return visitor.visitUnit_statement(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 52, in visitUnit_statement
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 32606, in accept
return visitor.visitAnonymous_block(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 59, in visitAnonymous_block
return self.visitBody(ctx)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 220, in visitBody
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34570, in accept
return visitor.visitSeq_of_statements(self)
File "./built/PlSqlParserVisitor.py", line 1394, in visitSeq_of_statements
return self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34757, in accept
return visitor.visitStatement(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 286, in visitStatement
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 35423, in accept
return visitor.visitLoop_statement(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 292, in visitLoop_statement
ret = self.visitChildren(ctx)
File "/opt/python_venv/priscilla/lib64/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 35534, in accept
return visitor.visitCursor_loop_param(self)
File "/opt/git/priscilla/lib/ScriptVisitor.py", line 310, in visitCursor_loop_param
target = ctx.index_name().getText().upper()
AttributeError: 'NoneType' object has no attribute 'getText'
make: *** [/opt/git/priscilla/output/ccr.py] Error 1

Any help appreciated thanks.

INSERT SELECT Statement

Hi

It seems to throw error for a pl/sql stored procedure that has INSERT SELECT statement.
Is this feature supported?

Thanks

python3.6 lib/S2S.py /opt/priscilla/input/wlk_rec_mi_hedgei_bak.pkg /opt/priscilla/output/wlk_rec_mi_hedgei_bak.py
Traceback (most recent call last):
File "lib/S2S.py", line 37, in
main(sys.argv)
File "lib/S2S.py", line 23, in main
node = tree.accept(visitor)
File "./built/PlSqlParser.py", line 7324, in accept
return visitor.visitSql_script(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 43, in visitSql_script
body = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 7541, in accept
return visitor.visitUnit_statement(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 52, in visitUnit_statement
ret = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 10058, in accept
return visitor.visitCreate_procedure_body(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 106, in visitCreate_procedure_body
return self.visitCreate_function_body(ctx)
File "/opt/priscilla/lib/ScriptVisitor.py", line 112, in visitCreate_function_body
ret = visitor.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 36221, in accept
return visitor.visitBody(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 220, in visitBody
ret = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34570, in accept
return visitor.visitSeq_of_statements(self)
File "./built/PlSqlParserVisitor.py", line 1394, in visitSeq_of_statements
return self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 34757, in accept
return visitor.visitStatement(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 286, in visitStatement
ret = self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 36524, in accept
return visitor.visitSql_statement(self)
File "./built/PlSqlParserVisitor.py", line 1529, in visitSql_statement
return self.visitChildren(ctx)
File "/usr/lib/python3.6/site-packages/antlr4/tree/Tree.py", line 44, in visitChildren
childResult = c.accept(self)
File "./built/PlSqlParser.py", line 36757, in accept
return visitor.visitData_manipulation_language_statements(self)
File "/opt/priscilla/lib/ScriptVisitor.py", line 534, in visitData_manipulation_language_statements
return visitor.visitData_manipulation_language_statements(ctx)
File "/opt/priscilla/lib/SqlVisitor.py", line 16, in visitData_manipulation_language_statements
ret = self.visitSelect_statement(ctx)
File "/opt/priscilla/lib/SqlVisitor.py", line 41, in visitSelect_statement
param.start_index -= ctx.start.start
AttributeError: 'SQL' object has no attribute 'start_index'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.