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 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.