vorax 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -55,6 +55,6 @@ require 'vorax/parser/plsql_structure.rb'
55
55
  require 'vorax/parser/grammars/statement.rb'
56
56
  require 'vorax/parser/grammars/alias.rb'
57
57
  require 'vorax/parser/grammars/column.rb'
58
- require 'vorax/parser/grammars/package_spec.rb'
58
+ require 'vorax/parser/grammars/declare.rb'
59
59
  require 'vorax/parser/grammars/plsql_def.rb'
60
60
  require 'vorax/parser/grammars/for_block.rb'
@@ -21,11 +21,12 @@ module Vorax
21
21
  # @param data the statement
22
22
  def walk(data)
23
23
  @refs = [];
24
+ @start_columns = 0
24
25
  @columns = nil;
25
26
  data << "\n"
26
27
  eof = data.length
27
28
 
28
- # line 29 "lib/vorax/parser/grammars/alias.rb"
29
+ # line 30 "lib/vorax/parser/grammars/alias.rb"
29
30
  class << self
30
31
  attr_accessor :_alias_actions
31
32
  private :_alias_actions, :_alias_actions=
@@ -544,9 +545,9 @@ end
544
545
  self.alias_en_main = 131;
545
546
 
546
547
 
547
- # line 95 "lib/vorax/parser/grammars/alias.rl"
548
+ # line 96 "lib/vorax/parser/grammars/alias.rl"
548
549
 
549
- # line 550 "lib/vorax/parser/grammars/alias.rb"
550
+ # line 551 "lib/vorax/parser/grammars/alias.rb"
550
551
  begin
551
552
  p ||= 0
552
553
  pe ||= data.length
@@ -556,9 +557,9 @@ begin
556
557
  act = 0
557
558
  end
558
559
 
559
- # line 96 "lib/vorax/parser/grammars/alias.rl"
560
+ # line 97 "lib/vorax/parser/grammars/alias.rl"
560
561
 
561
- # line 562 "lib/vorax/parser/grammars/alias.rb"
562
+ # line 563 "lib/vorax/parser/grammars/alias.rb"
562
563
  begin
563
564
  _klen, _trans, _keys, _acts, _nacts = nil
564
565
  _goto_level = 0
@@ -588,7 +589,7 @@ begin
588
589
  begin
589
590
  ts = p
590
591
  end
591
- # line 592 "lib/vorax/parser/grammars/alias.rb"
592
+ # line 593 "lib/vorax/parser/grammars/alias.rb"
592
593
  end # from state action switch
593
594
  end
594
595
  if _trigger_goto
@@ -812,7 +813,7 @@ end
812
813
  end
813
814
  end
814
815
  end
815
- # line 816 "lib/vorax/parser/grammars/alias.rb"
816
+ # line 817 "lib/vorax/parser/grammars/alias.rb"
816
817
  end # action switch
817
818
  end
818
819
  end
@@ -832,7 +833,7 @@ when 8 then
832
833
  # line 1 "NONE"
833
834
  begin
834
835
  ts = nil; end
835
- # line 836 "lib/vorax/parser/grammars/alias.rb"
836
+ # line 837 "lib/vorax/parser/grammars/alias.rb"
836
837
  end # to state action switch
837
838
  end
838
839
  if _trigger_goto
@@ -859,7 +860,7 @@ end
859
860
  end
860
861
  end
861
862
 
862
- # line 97 "lib/vorax/parser/grammars/alias.rl"
863
+ # line 98 "lib/vorax/parser/grammars/alias.rl"
863
864
  data.chop!
864
865
 
865
866
  # needed to finalize the last pending tableref
@@ -88,6 +88,7 @@ module Vorax
88
88
  # @param data the statement
89
89
  def walk(data)
90
90
  @refs = [];
91
+ @start_columns = 0
91
92
  @columns = nil;
92
93
  data << "\n"
93
94
  eof = data.length
@@ -1,7 +1,7 @@
1
1
 
2
- # line 1 "lib/vorax/parser/grammars/package_spec.rl"
2
+ # line 1 "lib/vorax/parser/grammars/declare.rl"
3
3
 
4
- # line 41 "lib/vorax/parser/grammars/package_spec.rl"
4
+ # line 41 "lib/vorax/parser/grammars/declare.rl"
5
5
 
6
6
 
7
7
  require 'set'
@@ -11,7 +11,7 @@ module Vorax
11
11
  module Parser
12
12
 
13
13
  # A class used to parse a PLSQL package spec.
14
- class PackageSpec
14
+ class Declare
15
15
 
16
16
  attr_reader :constants, :types, :exceptions, :cursors, :variables, :functions, :procedures
17
17
 
@@ -29,12 +29,12 @@ module Vorax
29
29
  if data
30
30
  eof = data.length
31
31
 
32
- # line 33 "lib/vorax/parser/grammars/package_spec.rb"
32
+ # line 33 "lib/vorax/parser/grammars/declare.rb"
33
33
  class << self
34
- attr_accessor :_package_spec_actions
35
- private :_package_spec_actions, :_package_spec_actions=
34
+ attr_accessor :_declare_actions
35
+ private :_declare_actions, :_declare_actions=
36
36
  end
37
- self._package_spec_actions = [
37
+ self._declare_actions = [
38
38
  0, 1, 0, 1, 1, 1, 2, 1,
39
39
  3, 1, 4, 1, 15, 1, 16, 1,
40
40
  17, 1, 18, 1, 19, 1, 20, 1,
@@ -51,10 +51,10 @@ self._package_spec_actions = [
51
51
  ]
52
52
 
53
53
  class << self
54
- attr_accessor :_package_spec_key_offsets
55
- private :_package_spec_key_offsets, :_package_spec_key_offsets=
54
+ attr_accessor :_declare_key_offsets
55
+ private :_declare_key_offsets, :_declare_key_offsets=
56
56
  end
57
- self._package_spec_key_offsets = [
57
+ self._declare_key_offsets = [
58
58
  0, 11, 12, 13, 14, 15, 17, 19,
59
59
  24, 47, 48, 53, 54, 55, 56, 57,
60
60
  59, 61, 63, 65, 67, 69, 71, 73,
@@ -88,10 +88,10 @@ self._package_spec_key_offsets = [
88
88
  ]
89
89
 
90
90
  class << self
91
- attr_accessor :_package_spec_trans_keys
92
- private :_package_spec_trans_keys, :_package_spec_trans_keys=
91
+ attr_accessor :_declare_trans_keys
92
+ private :_declare_trans_keys, :_declare_trans_keys=
93
93
  end
94
- self._package_spec_trans_keys = [
94
+ self._declare_trans_keys = [
95
95
  32, 45, 47, 65, 68, 73, 97, 100,
96
96
  105, 9, 13, 45, 10, 42, 42, 42,
97
97
  47, 83, 115, 32, 45, 47, 9, 13,
@@ -328,10 +328,10 @@ self._package_spec_trans_keys = [
328
328
  ]
329
329
 
330
330
  class << self
331
- attr_accessor :_package_spec_single_lengths
332
- private :_package_spec_single_lengths, :_package_spec_single_lengths=
331
+ attr_accessor :_declare_single_lengths
332
+ private :_declare_single_lengths, :_declare_single_lengths=
333
333
  end
334
- self._package_spec_single_lengths = [
334
+ self._declare_single_lengths = [
335
335
  9, 1, 1, 1, 1, 2, 2, 3,
336
336
  15, 1, 3, 1, 1, 1, 1, 2,
337
337
  2, 2, 2, 2, 2, 2, 2, 2,
@@ -365,10 +365,10 @@ self._package_spec_single_lengths = [
365
365
  ]
366
366
 
367
367
  class << self
368
- attr_accessor :_package_spec_range_lengths
369
- private :_package_spec_range_lengths, :_package_spec_range_lengths=
368
+ attr_accessor :_declare_range_lengths
369
+ private :_declare_range_lengths, :_declare_range_lengths=
370
370
  end
371
- self._package_spec_range_lengths = [
371
+ self._declare_range_lengths = [
372
372
  1, 0, 0, 0, 0, 0, 0, 1,
373
373
  4, 0, 1, 0, 0, 0, 0, 0,
374
374
  0, 0, 0, 0, 0, 0, 0, 0,
@@ -402,10 +402,10 @@ self._package_spec_range_lengths = [
402
402
  ]
403
403
 
404
404
  class << self
405
- attr_accessor :_package_spec_index_offsets
406
- private :_package_spec_index_offsets, :_package_spec_index_offsets=
405
+ attr_accessor :_declare_index_offsets
406
+ private :_declare_index_offsets, :_declare_index_offsets=
407
407
  end
408
- self._package_spec_index_offsets = [
408
+ self._declare_index_offsets = [
409
409
  0, 11, 13, 15, 17, 19, 22, 25,
410
410
  30, 50, 52, 57, 59, 61, 63, 65,
411
411
  68, 71, 74, 77, 80, 83, 86, 89,
@@ -439,10 +439,10 @@ self._package_spec_index_offsets = [
439
439
  ]
440
440
 
441
441
  class << self
442
- attr_accessor :_package_spec_indicies
443
- private :_package_spec_indicies, :_package_spec_indicies=
442
+ attr_accessor :_declare_indicies
443
+ private :_declare_indicies, :_declare_indicies=
444
444
  end
445
- self._package_spec_indicies = [
445
+ self._declare_indicies = [
446
446
  1, 2, 3, 4, 5, 4, 4, 5,
447
447
  4, 1, 0, 6, 0, 1, 6, 7,
448
448
  0, 8, 7, 8, 1, 7, 9, 9,
@@ -642,10 +642,10 @@ self._package_spec_indicies = [
642
642
  ]
643
643
 
644
644
  class << self
645
- attr_accessor :_package_spec_trans_targs
646
- private :_package_spec_trans_targs, :_package_spec_trans_targs=
645
+ attr_accessor :_declare_trans_targs
646
+ private :_declare_trans_targs, :_declare_trans_targs=
647
647
  end
648
- self._package_spec_trans_targs = [
648
+ self._declare_trans_targs = [
649
649
  183, 0, 1, 3, 6, 166, 2, 4,
650
650
  5, 7, 8, 38, 40, 9, 37, 43,
651
651
  84, 93, 108, 127, 9, 10, 185, 11,
@@ -687,10 +687,10 @@ self._package_spec_trans_targs = [
687
687
  ]
688
688
 
689
689
  class << self
690
- attr_accessor :_package_spec_trans_actions
691
- private :_package_spec_trans_actions, :_package_spec_trans_actions=
690
+ attr_accessor :_declare_trans_actions
691
+ private :_declare_trans_actions, :_declare_trans_actions=
692
692
  end
693
- self._package_spec_trans_actions = [
693
+ self._declare_trans_actions = [
694
694
  35, 0, 0, 0, 0, 0, 0, 0,
695
695
  0, 0, 0, 0, 0, 1, 1, 1,
696
696
  1, 1, 1, 1, 0, 0, 95, 3,
@@ -732,10 +732,10 @@ self._package_spec_trans_actions = [
732
732
  ]
733
733
 
734
734
  class << self
735
- attr_accessor :_package_spec_to_state_actions
736
- private :_package_spec_to_state_actions, :_package_spec_to_state_actions=
735
+ attr_accessor :_declare_to_state_actions
736
+ private :_declare_to_state_actions, :_declare_to_state_actions=
737
737
  end
738
- self._package_spec_to_state_actions = [
738
+ self._declare_to_state_actions = [
739
739
  0, 0, 0, 0, 0, 0, 0, 0,
740
740
  0, 0, 0, 0, 0, 0, 0, 0,
741
741
  0, 0, 0, 0, 0, 0, 0, 0,
@@ -769,10 +769,10 @@ self._package_spec_to_state_actions = [
769
769
  ]
770
770
 
771
771
  class << self
772
- attr_accessor :_package_spec_from_state_actions
773
- private :_package_spec_from_state_actions, :_package_spec_from_state_actions=
772
+ attr_accessor :_declare_from_state_actions
773
+ private :_declare_from_state_actions, :_declare_from_state_actions=
774
774
  end
775
- self._package_spec_from_state_actions = [
775
+ self._declare_from_state_actions = [
776
776
  0, 0, 0, 0, 0, 0, 0, 0,
777
777
  0, 0, 0, 0, 0, 0, 0, 0,
778
778
  0, 0, 0, 0, 0, 0, 0, 0,
@@ -806,10 +806,10 @@ self._package_spec_from_state_actions = [
806
806
  ]
807
807
 
808
808
  class << self
809
- attr_accessor :_package_spec_eof_trans
810
- private :_package_spec_eof_trans, :_package_spec_eof_trans=
809
+ attr_accessor :_declare_eof_trans
810
+ private :_declare_eof_trans, :_declare_eof_trans=
811
811
  end
812
- self._package_spec_eof_trans = [
812
+ self._declare_eof_trans = [
813
813
  1, 1, 1, 1, 1, 1, 1, 1,
814
814
  1, 1, 1, 1, 1, 1, 1, 1,
815
815
  1, 1, 1, 1, 1, 1, 1, 1,
@@ -843,39 +843,39 @@ self._package_spec_eof_trans = [
843
843
  ]
844
844
 
845
845
  class << self
846
- attr_accessor :package_spec_start
846
+ attr_accessor :declare_start
847
847
  end
848
- self.package_spec_start = 183;
848
+ self.declare_start = 183;
849
849
  class << self
850
- attr_accessor :package_spec_first_final
850
+ attr_accessor :declare_first_final
851
851
  end
852
- self.package_spec_first_final = 183;
852
+ self.declare_first_final = 183;
853
853
  class << self
854
- attr_accessor :package_spec_error
854
+ attr_accessor :declare_error
855
855
  end
856
- self.package_spec_error = -1;
856
+ self.declare_error = -1;
857
857
 
858
858
  class << self
859
- attr_accessor :package_spec_en_main
859
+ attr_accessor :declare_en_main
860
860
  end
861
- self.package_spec_en_main = 183;
861
+ self.declare_en_main = 183;
862
862
 
863
863
 
864
- # line 68 "lib/vorax/parser/grammars/package_spec.rl"
864
+ # line 68 "lib/vorax/parser/grammars/declare.rl"
865
865
 
866
- # line 867 "lib/vorax/parser/grammars/package_spec.rb"
866
+ # line 867 "lib/vorax/parser/grammars/declare.rb"
867
867
  begin
868
868
  p ||= 0
869
869
  pe ||= data.length
870
- cs = package_spec_start
870
+ cs = declare_start
871
871
  ts = nil
872
872
  te = nil
873
873
  act = 0
874
874
  end
875
875
 
876
- # line 69 "lib/vorax/parser/grammars/package_spec.rl"
876
+ # line 69 "lib/vorax/parser/grammars/declare.rl"
877
877
 
878
- # line 879 "lib/vorax/parser/grammars/package_spec.rb"
878
+ # line 879 "lib/vorax/parser/grammars/declare.rb"
879
879
  begin
880
880
  _klen, _trans, _keys, _acts, _nacts = nil
881
881
  _goto_level = 0
@@ -893,27 +893,27 @@ begin
893
893
  end
894
894
  end
895
895
  if _goto_level <= _resume
896
- _acts = _package_spec_from_state_actions[cs]
897
- _nacts = _package_spec_actions[_acts]
896
+ _acts = _declare_from_state_actions[cs]
897
+ _nacts = _declare_actions[_acts]
898
898
  _acts += 1
899
899
  while _nacts > 0
900
900
  _nacts -= 1
901
901
  _acts += 1
902
- case _package_spec_actions[_acts - 1]
902
+ case _declare_actions[_acts - 1]
903
903
  when 3 then
904
904
  # line 1 "NONE"
905
905
  begin
906
906
  ts = p
907
907
  end
908
- # line 909 "lib/vorax/parser/grammars/package_spec.rb"
908
+ # line 909 "lib/vorax/parser/grammars/declare.rb"
909
909
  end # from state action switch
910
910
  end
911
911
  if _trigger_goto
912
912
  next
913
913
  end
914
- _keys = _package_spec_key_offsets[cs]
915
- _trans = _package_spec_index_offsets[cs]
916
- _klen = _package_spec_single_lengths[cs]
914
+ _keys = _declare_key_offsets[cs]
915
+ _trans = _declare_index_offsets[cs]
916
+ _klen = _declare_single_lengths[cs]
917
917
  _break_match = false
918
918
 
919
919
  begin
@@ -925,9 +925,9 @@ ts = p
925
925
  break if _upper < _lower
926
926
  _mid = _lower + ( (_upper - _lower) >> 1 )
927
927
 
928
- if data[p].ord < _package_spec_trans_keys[_mid]
928
+ if data[p].ord < _declare_trans_keys[_mid]
929
929
  _upper = _mid - 1
930
- elsif data[p].ord > _package_spec_trans_keys[_mid]
930
+ elsif data[p].ord > _declare_trans_keys[_mid]
931
931
  _lower = _mid + 1
932
932
  else
933
933
  _trans += (_mid - _keys)
@@ -939,16 +939,16 @@ ts = p
939
939
  _keys += _klen
940
940
  _trans += _klen
941
941
  end
942
- _klen = _package_spec_range_lengths[cs]
942
+ _klen = _declare_range_lengths[cs]
943
943
  if _klen > 0
944
944
  _lower = _keys
945
945
  _upper = _keys + (_klen << 1) - 2
946
946
  loop do
947
947
  break if _upper < _lower
948
948
  _mid = _lower + (((_upper-_lower) >> 1) & ~1)
949
- if data[p].ord < _package_spec_trans_keys[_mid]
949
+ if data[p].ord < _declare_trans_keys[_mid]
950
950
  _upper = _mid - 2
951
- elsif data[p].ord > _package_spec_trans_keys[_mid+1]
951
+ elsif data[p].ord > _declare_trans_keys[_mid+1]
952
952
  _lower = _mid + 2
953
953
  else
954
954
  _trans += ((_mid - _keys) >> 1)
@@ -960,26 +960,26 @@ ts = p
960
960
  _trans += _klen
961
961
  end
962
962
  end while false
963
- _trans = _package_spec_indicies[_trans]
963
+ _trans = _declare_indicies[_trans]
964
964
  end
965
965
  if _goto_level <= _eof_trans
966
- cs = _package_spec_trans_targs[_trans]
967
- if _package_spec_trans_actions[_trans] != 0
968
- _acts = _package_spec_trans_actions[_trans]
969
- _nacts = _package_spec_actions[_acts]
966
+ cs = _declare_trans_targs[_trans]
967
+ if _declare_trans_actions[_trans] != 0
968
+ _acts = _declare_trans_actions[_trans]
969
+ _nacts = _declare_actions[_acts]
970
970
  _acts += 1
971
971
  while _nacts > 0
972
972
  _nacts -= 1
973
973
  _acts += 1
974
- case _package_spec_actions[_acts - 1]
974
+ case _declare_actions[_acts - 1]
975
975
  when 0 then
976
- # line 7 "lib/vorax/parser/grammars/package_spec.rl"
976
+ # line 7 "lib/vorax/parser/grammars/declare.rl"
977
977
  begin
978
978
 
979
979
  @start = p
980
980
  end
981
981
  when 1 then
982
- # line 11 "lib/vorax/parser/grammars/package_spec.rl"
982
+ # line 11 "lib/vorax/parser/grammars/declare.rl"
983
983
  begin
984
984
 
985
985
  @end = p - 1
@@ -990,121 +990,121 @@ when 4 then
990
990
  te = p+1
991
991
  end
992
992
  when 5 then
993
- # line 28 "lib/vorax/parser/grammars/package_spec.rl"
993
+ # line 28 "lib/vorax/parser/grammars/declare.rl"
994
994
  begin
995
995
  act = 1; end
996
996
  when 6 then
997
- # line 30 "lib/vorax/parser/grammars/package_spec.rl"
997
+ # line 30 "lib/vorax/parser/grammars/declare.rl"
998
998
  begin
999
999
  act = 3; end
1000
1000
  when 7 then
1001
- # line 31 "lib/vorax/parser/grammars/package_spec.rl"
1001
+ # line 31 "lib/vorax/parser/grammars/declare.rl"
1002
1002
  begin
1003
1003
  act = 4; end
1004
1004
  when 8 then
1005
- # line 32 "lib/vorax/parser/grammars/package_spec.rl"
1005
+ # line 32 "lib/vorax/parser/grammars/declare.rl"
1006
1006
  begin
1007
1007
  act = 5; end
1008
1008
  when 9 then
1009
- # line 33 "lib/vorax/parser/grammars/package_spec.rl"
1009
+ # line 33 "lib/vorax/parser/grammars/declare.rl"
1010
1010
  begin
1011
1011
  act = 6; end
1012
1012
  when 10 then
1013
- # line 34 "lib/vorax/parser/grammars/package_spec.rl"
1013
+ # line 34 "lib/vorax/parser/grammars/declare.rl"
1014
1014
  begin
1015
1015
  act = 7; end
1016
1016
  when 11 then
1017
- # line 35 "lib/vorax/parser/grammars/package_spec.rl"
1017
+ # line 35 "lib/vorax/parser/grammars/declare.rl"
1018
1018
  begin
1019
1019
  act = 8; end
1020
1020
  when 12 then
1021
- # line 36 "lib/vorax/parser/grammars/package_spec.rl"
1021
+ # line 36 "lib/vorax/parser/grammars/declare.rl"
1022
1022
  begin
1023
1023
  act = 9; end
1024
1024
  when 13 then
1025
- # line 37 "lib/vorax/parser/grammars/package_spec.rl"
1025
+ # line 37 "lib/vorax/parser/grammars/declare.rl"
1026
1026
  begin
1027
1027
  act = 10; end
1028
1028
  when 14 then
1029
- # line 38 "lib/vorax/parser/grammars/package_spec.rl"
1029
+ # line 38 "lib/vorax/parser/grammars/declare.rl"
1030
1030
  begin
1031
1031
  act = 11; end
1032
1032
  when 15 then
1033
- # line 29 "lib/vorax/parser/grammars/package_spec.rl"
1033
+ # line 29 "lib/vorax/parser/grammars/declare.rl"
1034
1034
  begin
1035
1035
  te = p+1
1036
1036
  end
1037
1037
  when 16 then
1038
- # line 31 "lib/vorax/parser/grammars/package_spec.rl"
1038
+ # line 31 "lib/vorax/parser/grammars/declare.rl"
1039
1039
  begin
1040
1040
  te = p+1
1041
1041
  begin @constants.add(data[(@start..@end)]) end
1042
1042
  end
1043
1043
  when 17 then
1044
- # line 32 "lib/vorax/parser/grammars/package_spec.rl"
1044
+ # line 32 "lib/vorax/parser/grammars/declare.rl"
1045
1045
  begin
1046
1046
  te = p+1
1047
1047
  begin @exceptions.add(data[(@start..@end)]) end
1048
1048
  end
1049
1049
  when 18 then
1050
- # line 38 "lib/vorax/parser/grammars/package_spec.rl"
1050
+ # line 38 "lib/vorax/parser/grammars/declare.rl"
1051
1051
  begin
1052
1052
  te = p+1
1053
1053
  end
1054
1054
  when 19 then
1055
- # line 28 "lib/vorax/parser/grammars/package_spec.rl"
1055
+ # line 28 "lib/vorax/parser/grammars/declare.rl"
1056
1056
  begin
1057
1057
  te = p
1058
1058
  p = p - 1; end
1059
1059
  when 20 then
1060
- # line 31 "lib/vorax/parser/grammars/package_spec.rl"
1060
+ # line 31 "lib/vorax/parser/grammars/declare.rl"
1061
1061
  begin
1062
1062
  te = p
1063
1063
  p = p - 1; begin @constants.add(data[(@start..@end)]) end
1064
1064
  end
1065
1065
  when 21 then
1066
- # line 32 "lib/vorax/parser/grammars/package_spec.rl"
1066
+ # line 32 "lib/vorax/parser/grammars/declare.rl"
1067
1067
  begin
1068
1068
  te = p
1069
1069
  p = p - 1; begin @exceptions.add(data[(@start..@end)]) end
1070
1070
  end
1071
1071
  when 22 then
1072
- # line 33 "lib/vorax/parser/grammars/package_spec.rl"
1072
+ # line 33 "lib/vorax/parser/grammars/declare.rl"
1073
1073
  begin
1074
1074
  te = p
1075
1075
  p = p - 1; begin @cursors.add(data[(@start..@end)]) end
1076
1076
  end
1077
1077
  when 23 then
1078
- # line 34 "lib/vorax/parser/grammars/package_spec.rl"
1078
+ # line 34 "lib/vorax/parser/grammars/declare.rl"
1079
1079
  begin
1080
1080
  te = p
1081
1081
  p = p - 1; begin @types.add(data[(@start..@end)]) end
1082
1082
  end
1083
1083
  when 24 then
1084
- # line 35 "lib/vorax/parser/grammars/package_spec.rl"
1084
+ # line 35 "lib/vorax/parser/grammars/declare.rl"
1085
1085
  begin
1086
1086
  te = p
1087
1087
  p = p - 1; begin @variables.add(data[(@start..@end)]) end
1088
1088
  end
1089
1089
  when 25 then
1090
- # line 36 "lib/vorax/parser/grammars/package_spec.rl"
1090
+ # line 36 "lib/vorax/parser/grammars/declare.rl"
1091
1091
  begin
1092
1092
  te = p
1093
1093
  p = p - 1; begin @functions.add(data[(@start..@end)]) end
1094
1094
  end
1095
1095
  when 26 then
1096
- # line 37 "lib/vorax/parser/grammars/package_spec.rl"
1096
+ # line 37 "lib/vorax/parser/grammars/declare.rl"
1097
1097
  begin
1098
1098
  te = p
1099
1099
  p = p - 1; begin @procedures.add(data[(@start..@end)]) end
1100
1100
  end
1101
1101
  when 27 then
1102
- # line 38 "lib/vorax/parser/grammars/package_spec.rl"
1102
+ # line 38 "lib/vorax/parser/grammars/declare.rl"
1103
1103
  begin
1104
1104
  te = p
1105
1105
  p = p - 1; end
1106
1106
  when 28 then
1107
- # line 38 "lib/vorax/parser/grammars/package_spec.rl"
1107
+ # line 38 "lib/vorax/parser/grammars/declare.rl"
1108
1108
  begin
1109
1109
  begin p = ((te))-1; end
1110
1110
  end
@@ -1141,7 +1141,7 @@ end
1141
1141
  end
1142
1142
  end
1143
1143
  end
1144
- # line 1145 "lib/vorax/parser/grammars/package_spec.rb"
1144
+ # line 1145 "lib/vorax/parser/grammars/declare.rb"
1145
1145
  end # action switch
1146
1146
  end
1147
1147
  end
@@ -1150,18 +1150,18 @@ end
1150
1150
  end
1151
1151
  end
1152
1152
  if _goto_level <= _again
1153
- _acts = _package_spec_to_state_actions[cs]
1154
- _nacts = _package_spec_actions[_acts]
1153
+ _acts = _declare_to_state_actions[cs]
1154
+ _nacts = _declare_actions[_acts]
1155
1155
  _acts += 1
1156
1156
  while _nacts > 0
1157
1157
  _nacts -= 1
1158
1158
  _acts += 1
1159
- case _package_spec_actions[_acts - 1]
1159
+ case _declare_actions[_acts - 1]
1160
1160
  when 2 then
1161
1161
  # line 1 "NONE"
1162
1162
  begin
1163
1163
  ts = nil; end
1164
- # line 1165 "lib/vorax/parser/grammars/package_spec.rb"
1164
+ # line 1165 "lib/vorax/parser/grammars/declare.rb"
1165
1165
  end # to state action switch
1166
1166
  end
1167
1167
  if _trigger_goto
@@ -1175,8 +1175,8 @@ ts = nil; end
1175
1175
  end
1176
1176
  if _goto_level <= _test_eof
1177
1177
  if p == eof
1178
- if _package_spec_eof_trans[cs] > 0
1179
- _trans = _package_spec_eof_trans[cs] - 1;
1178
+ if _declare_eof_trans[cs] > 0
1179
+ _trans = _declare_eof_trans[cs] - 1;
1180
1180
  _goto_level = _eof_trans
1181
1181
  next;
1182
1182
  end
@@ -1188,7 +1188,7 @@ end
1188
1188
  end
1189
1189
  end
1190
1190
 
1191
- # line 70 "lib/vorax/parser/grammars/package_spec.rl"
1191
+ # line 70 "lib/vorax/parser/grammars/declare.rl"
1192
1192
  end
1193
1193
  end
1194
1194
 
@@ -1,6 +1,6 @@
1
1
  %%{
2
2
 
3
- machine package_spec;
3
+ machine declare;
4
4
 
5
5
  include common "common.rl";
6
6
 
@@ -47,7 +47,7 @@ module Vorax
47
47
  module Parser
48
48
 
49
49
  # A class used to parse a PLSQL package spec.
50
- class PackageSpec
50
+ class Declare
51
51
 
52
52
  attr_reader :constants, :types, :exceptions, :cursors, :variables, :functions, :procedures
53
53
 
@@ -74,9 +74,9 @@ module Vorax
74
74
  inspector = StmtInspector.new(statement)
75
75
  columns_data = inspector.query_fields
76
76
  columns_data.each do |column|
77
- if column =~ /([a-z0-9#$_]+\.)?\*/i
77
+ if column =~ /([a-z0-9#$\_]+\.)?\*/i
78
78
  #might be an alias
79
- alias_name = column[/[a-z0-9#$_]+/]
79
+ alias_name = column[/[a-z0-9#$\_]+/i]
80
80
  ds = []
81
81
  if alias_name
82
82
  src = inspector.data_source.find do |r|
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Vorax
4
4
 
5
- VERSION = '0.3.0' unless defined?(VERSION)
5
+ VERSION = '0.3.1' unless defined?(VERSION)
6
6
 
7
7
  end
@@ -7,7 +7,7 @@ describe 'package_spec' do
7
7
 
8
8
  it 'should work with a simple package' do
9
9
  text = File.open("spec/sql/muci.spc", 'rb') { |file| file.read }
10
- parser = Vorax::Parser::PackageSpec.new
10
+ parser = Vorax::Parser::Declare.new
11
11
  parser.walk(text)
12
12
 
13
13
  parser.constants.should eq(Set.new(["MY_CONSTANT1", "MY_CONSTANT2"]))
@@ -21,7 +21,7 @@ describe 'package_spec' do
21
21
 
22
22
  it 'should work with a big package spec' do
23
23
  text = File.open('spec/sql/dbms_stats.spc', 'rb') { |file| file.read }
24
- parser = Vorax::Parser::PackageSpec.new
24
+ parser = Vorax::Parser::Declare.new
25
25
  parser.walk(text)
26
26
  parser.constants.should eq(Set.new(["AUTO_CASCADE", "AUTO_INVALIDATE", "AUTO_SAMPLE_SIZE", "DEFAULT_DEGREE", "AUTO_DEGREE", "DEFAULT_CASCADE", "DEFAULT_DEGREE_VALUE", "DEFAULT_ESTIMATE_PERCENT", "DEFAULT_METHOD_OPT", "DEFAULT_NO_INVALIDATE", "DEFAULT_GRANULARITY", "DEFAULT_PUBLISH", "DEFAULT_INCREMENTAL", "DEFAULT_STALE_PERCENT", "DEFAULT_AUTOSTATS_TARGET", "DEFAULT_STAT_CATEGORY", "PURGE_ALL"]))
27
27
  parser.exceptions.should eq(Set.new([]))
@@ -34,7 +34,7 @@ describe 'package_spec' do
34
34
 
35
35
  it 'should work with a SYS package spec' do
36
36
  text = File.open('spec/sql/dbms_crypto.spc', 'rb') { |file| file.read }
37
- parser = Vorax::Parser::PackageSpec.new
37
+ parser = Vorax::Parser::Declare.new
38
38
  parser.walk(text)
39
39
  parser.constants.should eq(Set.new(["HASH_MD4", "HASH_MD5", "HASH_SH1", "HMAC_MD5", "HMAC_SH1", "ENCRYPT_DES", "ENCRYPT_3DES_2KEY", "ENCRYPT_3DES", "ENCRYPT_AES", "ENCRYPT_PBE_MD5DES", "ENCRYPT_AES128", "ENCRYPT_AES192", "ENCRYPT_AES256", "CHAIN_CBC", "CHAIN_CFB", "CHAIN_ECB", "CHAIN_OFB", "PAD_PKCS5", "PAD_NONE", "PAD_ZERO", "PAD_ORCL", "ENCRYPT_RC4", "DES_CBC_PKCS5", "DES3_CBC_PKCS5", "AES_CBC_PKCS5"]))
40
40
  parser.exceptions.should eq(Set.new(["CipherSuiteInvalid", "CipherSuiteNull", "KeyNull", "KeyBadSize", "DoubleEncryption"]))
@@ -28,25 +28,30 @@ describe 'plsql structure' do
28
28
  text = File.open('spec/sql/test.pkg', 'rb') { |file| file.read }
29
29
  structure = Parser::PlsqlStructure.new(text)
30
30
  compute_tree(structure.tree)
31
- puts @result
32
- =begin
33
31
  @result.should eq(<<STR
34
32
  * root - -> begin=
35
33
  |---+ test[SPEC]: 25 - 154 -> begin=0
36
34
  | |---> test[PROCEDURE]: 61 - 61 -> begin=0
37
35
  | +---> muci[FUNCTION]: 91 - 91 -> begin=0
38
- +---+ test[BODY]: 180 - 1173 -> begin=1136
39
- |---+ private_proc[PROCEDURE]: 232 - 874 -> begin=454
36
+ +---+ test[BODY]: 180 - 1672 -> begin=1635
37
+ |---+ private_proc[PROCEDURE]: 232 - 1373 -> begin=454
40
38
  | |---> abc[FUNCTION]: 325 - 392 -> begin=360
41
- | +---> xyz[PROCEDURE]: 403 - 449 -> begin=424
42
- |---+ test[PROCEDURE]: 879 - 1045 -> begin=911
43
- | +---> anonymous[BLOCK]: 967 - 1038 -> begin=962
44
- +---> muci[FUNCTION]: 1050 - 1133 -> begin=1104
39
+ | |---> xyz[PROCEDURE]: 403 - 449 -> begin=424
40
+ | |---+ for[FOR_BLOCK]: 485 - 1042 -> begin=530
41
+ | |---> if[IF_BLOCK]: 563 - 636 -> begin=564
42
+ | +---+ if[IF_BLOCK]: 645 - 1016 -> begin=646
43
+ |---+ if[IF_BLOCK]: 667 - 924 -> begin=668
44
+ | +---> for[FOR_BLOCK]: 691 - 858 -> begin=736
45
+ +---> if[IF_BLOCK]: 935 - 1002 -> begin=936
46
+ | |---> if[IF_BLOCK]: 1088 - 1167 -> begin=1089
47
+ | +---> loop[LOOP_BLOCK]: 1223 - 1318 -> begin=1224
48
+ |---+ test[PROCEDURE]: 1378 - 1544 -> begin=1410
49
+ | +---> anonymous[BLOCK]: 1466 - 1537 -> begin=1461
50
+ +---> muci[FUNCTION]: 1549 - 1632 -> begin=1603
45
51
  STR
46
52
  )
47
- =end
48
53
  end# }}}
49
- =begin
54
+
50
55
  it 'should work for a function' do# {{{
51
56
  text = File.open('spec/sql/test.fnc', 'rb') { |file| file.read }
52
57
  structure = Parser::PlsqlStructure.new(text)
@@ -58,6 +63,6 @@ STR
58
63
  STR
59
64
  )
60
65
  end# }}}
61
- =end
66
+
62
67
  end
63
68
 
@@ -29,7 +29,8 @@ create or replace package body test as
29
29
 
30
30
  begin
31
31
  l_var := 'abc';
32
- for x in (select * from dual) loop
32
+ for x in (select * from v$session) loop
33
+ dbms_output.put_line(x.);
33
34
  if x.dummy = 'X' then
34
35
  dbms_output.put_line('Great!');
35
36
  end if;
@@ -5,6 +5,18 @@ include Parser
5
5
 
6
6
  describe 'stmt_inspector' do
7
7
 
8
+ it 'should work with delete statements' do
9
+ text = "\n delete from bskcmptre d where itmidn = d.\n end loop;"
10
+ inspector = StmtInspector.new(text)
11
+ inspector.find_alias('d', 0).columns.should == ['bskcmptre.*']
12
+ end
13
+
14
+ it 'should work with hierarchical queries' do
15
+ text = "select * from (select level as lvl, bskcmptre_tbl.*\n from bskcmptre_tbl\n start with itmidn = pi_nodidn\n connect by prior itmidn = bskprnidn\n order by itmidn desc) v_crtrec"
16
+ inspector = StmtInspector.new(text)
17
+ inspector.find_alias('v_crtrec', 0).columns.should == ["lvl", "bskcmptre_tbl.*"]
18
+ end
19
+
8
20
  it 'should work with a complex query' do# {{{
9
21
  text = '
10
22
  with
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vorax
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-21 00:00:00.000000000 Z
12
+ date: 2013-02-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -104,10 +104,10 @@ files:
104
104
  - lib/vorax/parser/grammars/column.rb
105
105
  - lib/vorax/parser/grammars/column.rl
106
106
  - lib/vorax/parser/grammars/common.rl
107
+ - lib/vorax/parser/grammars/declare.rb
108
+ - lib/vorax/parser/grammars/declare.rl
107
109
  - lib/vorax/parser/grammars/for_block.rb
108
110
  - lib/vorax/parser/grammars/for_block.rl
109
- - lib/vorax/parser/grammars/package_spec.rb
110
- - lib/vorax/parser/grammars/package_spec.rl
111
111
  - lib/vorax/parser/grammars/plsql_def.rb
112
112
  - lib/vorax/parser/grammars/plsql_def.rl
113
113
  - lib/vorax/parser/grammars/statement.rb
@@ -123,7 +123,7 @@ files:
123
123
  - lib/vorax/vorax_io.rb
124
124
  - spec/column_spec.rb
125
125
  - spec/conn_string_spec.rb
126
- - spec/package_spec_spec.rb
126
+ - spec/declare_spec.rb
127
127
  - spec/pagezip_spec.rb
128
128
  - spec/parser_spec.rb
129
129
  - spec/plsql_structure_spec.rb
@@ -169,7 +169,7 @@ summary: Vorax ruby code companion.
169
169
  test_files:
170
170
  - spec/column_spec.rb
171
171
  - spec/conn_string_spec.rb
172
- - spec/package_spec_spec.rb
172
+ - spec/declare_spec.rb
173
173
  - spec/pagezip_spec.rb
174
174
  - spec/parser_spec.rb
175
175
  - spec/plsql_structure_spec.rb