kaqing 2.0.52__tar.gz → 2.0.54__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. {kaqing-2.0.52 → kaqing-2.0.54}/PKG-INFO +1 -1
  2. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sql/sql_completer.py +142 -1
  3. kaqing-2.0.54/adam/version.py +5 -0
  4. {kaqing-2.0.52 → kaqing-2.0.54}/kaqing.egg-info/PKG-INFO +1 -1
  5. {kaqing-2.0.52 → kaqing-2.0.54}/setup.py +1 -1
  6. kaqing-2.0.52/adam/version.py +0 -5
  7. {kaqing-2.0.52 → kaqing-2.0.54}/README +0 -0
  8. {kaqing-2.0.52 → kaqing-2.0.54}/adam/__init__.py +0 -0
  9. {kaqing-2.0.52 → kaqing-2.0.54}/adam/app_session.py +0 -0
  10. {kaqing-2.0.52 → kaqing-2.0.54}/adam/apps.py +0 -0
  11. {kaqing-2.0.52 → kaqing-2.0.54}/adam/batch.py +0 -0
  12. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/__init__.py +0 -0
  13. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/check.py +0 -0
  14. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/check_context.py +0 -0
  15. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/check_result.py +0 -0
  16. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/check_utils.py +0 -0
  17. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/compactionstats.py +0 -0
  18. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/cpu.py +0 -0
  19. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/disk.py +0 -0
  20. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/gossip.py +0 -0
  21. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/issue.py +0 -0
  22. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/memory.py +0 -0
  23. {kaqing-2.0.52 → kaqing-2.0.54}/adam/checks/status.py +0 -0
  24. {kaqing-2.0.52 → kaqing-2.0.54}/adam/cli.py +0 -0
  25. {kaqing-2.0.52 → kaqing-2.0.54}/adam/cli_group.py +0 -0
  26. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/__init__.py +0 -0
  27. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/column.py +0 -0
  28. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/columns.py +0 -0
  29. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/compactions.py +0 -0
  30. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/cpu.py +0 -0
  31. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/dir_data.py +0 -0
  32. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/dir_snapshots.py +0 -0
  33. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/gossip.py +0 -0
  34. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/host_id.py +0 -0
  35. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/memory.py +0 -0
  36. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/node_address.py +0 -0
  37. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/node_load.py +0 -0
  38. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/node_owns.py +0 -0
  39. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/node_status.py +0 -0
  40. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/node_tokens.py +0 -0
  41. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/node_utils.py +0 -0
  42. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/pod_name.py +0 -0
  43. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/volume_cassandra.py +0 -0
  44. {kaqing-2.0.52 → kaqing-2.0.54}/adam/columns/volume_root.py +0 -0
  45. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/__init__.py +0 -0
  46. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/alter_tables.py +0 -0
  47. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/app.py +0 -0
  48. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/app_ping.py +0 -0
  49. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/bash.py +0 -0
  50. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cd.py +0 -0
  51. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/check.py +0 -0
  52. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cli_commands.py +0 -0
  53. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/command.py +0 -0
  54. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/command_helpers.py +0 -0
  55. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/commands_utils.py +0 -0
  56. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cp.py +0 -0
  57. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cql/__init__.py +0 -0
  58. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cql/cql_completions.py +0 -0
  59. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cql/cql_table_completer.py +0 -0
  60. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cql/cql_utils.py +0 -0
  61. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/cql/cqlsh.py +0 -0
  62. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/__init__.py +0 -0
  63. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/code_start.py +0 -0
  64. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/code_stop.py +0 -0
  65. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/code_utils.py +0 -0
  66. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/deploy.py +0 -0
  67. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/deploy_frontend.py +0 -0
  68. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/deploy_pg_agent.py +0 -0
  69. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/deploy_pod.py +0 -0
  70. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/deploy_utils.py +0 -0
  71. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/undeploy.py +0 -0
  72. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/undeploy_frontend.py +0 -0
  73. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/undeploy_pg_agent.py +0 -0
  74. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/deploy/undeploy_pod.py +0 -0
  75. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/describe/__init__.py +0 -0
  76. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/describe/describe.py +0 -0
  77. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/describe/describe_keyspace.py +0 -0
  78. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/describe/describe_keyspaces.py +0 -0
  79. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/describe/describe_table.py +0 -0
  80. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/describe/describe_tables.py +0 -0
  81. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/devices.py +0 -0
  82. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/exit.py +0 -0
  83. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/help.py +0 -0
  84. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/issues.py +0 -0
  85. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/login.py +0 -0
  86. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/logs.py +0 -0
  87. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/ls.py +0 -0
  88. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/medusa/__init__.py +0 -0
  89. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/medusa/medusa.py +0 -0
  90. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/medusa/medusa_backup.py +0 -0
  91. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/medusa/medusa_restore.py +0 -0
  92. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/medusa/medusa_show_backupjobs.py +0 -0
  93. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/medusa/medusa_show_restorejobs.py +0 -0
  94. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/nodetool.py +0 -0
  95. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/nodetool_commands.py +0 -0
  96. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/param_get.py +0 -0
  97. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/param_set.py +0 -0
  98. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/__init__.py +0 -0
  99. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/postgres.py +0 -0
  100. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/postgres_ls.py +0 -0
  101. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/postgres_preview.py +0 -0
  102. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/postgres_session.py +0 -0
  103. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/postgres_utils.py +0 -0
  104. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/psql_completions.py +0 -0
  105. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/postgres/psql_table_completer.py +0 -0
  106. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/preview_table.py +0 -0
  107. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/pwd.py +0 -0
  108. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/__init__.py +0 -0
  109. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper.py +0 -0
  110. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_forward.py +0 -0
  111. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_forward_stop.py +0 -0
  112. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_restart.py +0 -0
  113. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_run_abort.py +0 -0
  114. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_runs.py +0 -0
  115. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_runs_abort.py +0 -0
  116. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_schedule_activate.py +0 -0
  117. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_schedule_start.py +0 -0
  118. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_schedule_stop.py +0 -0
  119. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_schedules.py +0 -0
  120. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_session.py +0 -0
  121. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/reaper/reaper_status.py +0 -0
  122. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/repair/__init__.py +0 -0
  123. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/repair/repair.py +0 -0
  124. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/repair/repair_log.py +0 -0
  125. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/repair/repair_run.py +0 -0
  126. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/repair/repair_scan.py +0 -0
  127. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/repair/repair_stop.py +0 -0
  128. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/report.py +0 -0
  129. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/restart.py +0 -0
  130. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/rollout.py +0 -0
  131. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/shell.py +0 -0
  132. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/__init__.py +0 -0
  133. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show.py +0 -0
  134. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_adam.py +0 -0
  135. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_app_actions.py +0 -0
  136. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_app_id.py +0 -0
  137. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_app_queues.py +0 -0
  138. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_cassandra_status.py +0 -0
  139. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_cassandra_version.py +0 -0
  140. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_commands.py +0 -0
  141. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_login.py +0 -0
  142. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_params.py +0 -0
  143. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_processes.py +0 -0
  144. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_repairs.py +0 -0
  145. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/show/show_storage.py +0 -0
  146. {kaqing-2.0.52 → kaqing-2.0.54}/adam/commands/watch.py +0 -0
  147. {kaqing-2.0.52 → kaqing-2.0.54}/adam/config.py +0 -0
  148. {kaqing-2.0.52 → kaqing-2.0.54}/adam/embedded_apps.py +0 -0
  149. {kaqing-2.0.52 → kaqing-2.0.54}/adam/embedded_params.py +0 -0
  150. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/__init__.py +0 -0
  151. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/cassandra_clusters.py +0 -0
  152. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/cassandra_nodes.py +0 -0
  153. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/config_maps.py +0 -0
  154. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/custom_resources.py +0 -0
  155. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/deployment.py +0 -0
  156. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/ingresses.py +0 -0
  157. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/jobs.py +0 -0
  158. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/kube_context.py +0 -0
  159. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/pods.py +0 -0
  160. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/secrets.py +0 -0
  161. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/service_accounts.py +0 -0
  162. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/services.py +0 -0
  163. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/statefulsets.py +0 -0
  164. {kaqing-2.0.52 → kaqing-2.0.54}/adam/k8s_utils/volumes.py +0 -0
  165. {kaqing-2.0.52 → kaqing-2.0.54}/adam/log.py +0 -0
  166. {kaqing-2.0.52 → kaqing-2.0.54}/adam/pod_exec_result.py +0 -0
  167. {kaqing-2.0.52 → kaqing-2.0.54}/adam/repl.py +0 -0
  168. {kaqing-2.0.52 → kaqing-2.0.54}/adam/repl_commands.py +0 -0
  169. {kaqing-2.0.52 → kaqing-2.0.54}/adam/repl_session.py +0 -0
  170. {kaqing-2.0.52 → kaqing-2.0.54}/adam/repl_state.py +0 -0
  171. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sql/__init__.py +0 -0
  172. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sql/sql_utils.py +0 -0
  173. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sql/term_completer.py +0 -0
  174. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/__init__.py +0 -0
  175. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/authenticator.py +0 -0
  176. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/authn_ad.py +0 -0
  177. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/authn_okta.py +0 -0
  178. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/cred_cache.py +0 -0
  179. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/id_token.py +0 -0
  180. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/idp.py +0 -0
  181. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/idp_login.py +0 -0
  182. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/idp_session.py +0 -0
  183. {kaqing-2.0.52 → kaqing-2.0.54}/adam/sso/sso_config.py +0 -0
  184. {kaqing-2.0.52 → kaqing-2.0.54}/adam/utils.py +0 -0
  185. {kaqing-2.0.52 → kaqing-2.0.54}/kaqing.egg-info/SOURCES.txt +0 -0
  186. {kaqing-2.0.52 → kaqing-2.0.54}/kaqing.egg-info/dependency_links.txt +0 -0
  187. {kaqing-2.0.52 → kaqing-2.0.54}/kaqing.egg-info/entry_points.txt +0 -0
  188. {kaqing-2.0.52 → kaqing-2.0.54}/kaqing.egg-info/top_level.txt +0 -0
  189. {kaqing-2.0.52 → kaqing-2.0.54}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaqing
3
- Version: 2.0.52
3
+ Version: 2.0.54
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -45,7 +45,7 @@ class SqlCompleter(Completer):
45
45
  elif state == "select_a_from_":
46
46
  completer = TermCompleter(self.tables())
47
47
  elif state == "select_a_from_x_":
48
- completer = TermCompleter(['where', 'group', 'limit'])
48
+ completer = TermCompleter(['where', 'inner', 'left', 'right', 'full', 'group', 'limit'])
49
49
  elif state == "select_a_from_x,":
50
50
  completer = TermCompleter(self.tables())
51
51
  elif state == "select_a_from_x_where_":
@@ -68,6 +68,34 @@ class SqlCompleter(Completer):
68
68
  completer = TermCompleter(['limit'])
69
69
  elif state == "select_a_from_x_group_by_a_limit_":
70
70
  completer = TermCompleter(['1'])
71
+ elif state == "select_a_from_x_inner_":
72
+ completer = TermCompleter(['join'])
73
+ elif state in ["select_a_from_x_inner_join_", "select_a_from_x_left_join_"]:
74
+ completer = TermCompleter(self.tables())
75
+ elif state == "select_a_from_x_inner_join_y,":
76
+ completer = TermCompleter(self.tables())
77
+ elif state == "select_a_from_x_inner_join_y_":
78
+ completer = TermCompleter(['on'])
79
+ elif state == "select_a_from_x_inner_join_y_on_":
80
+ completer = TermCompleter(['id'])
81
+ elif state == "select_a_from_x_inner_join_y_on_a":
82
+ completer = TermCompleter(['='])
83
+ elif state == "select_a_from_x_inner_join_y_on_a=":
84
+ completer = TermCompleter(['id'])
85
+ elif state == "select_a_from_x_inner_join_y_on_a=b_":
86
+ completer = TermCompleter(['where', 'group', 'limit'])
87
+ elif state == "select_a_from_x_left_":
88
+ completer = TermCompleter(['outer', 'join'])
89
+ elif state == "select_a_from_x_left_outer_":
90
+ completer = TermCompleter(['join'])
91
+ elif state == "select_a_from_x_right_":
92
+ completer = TermCompleter(['outer', 'join'])
93
+ elif state == "select_a_from_x_right_outer_":
94
+ completer = TermCompleter(['join'])
95
+ elif state == "select_a_from_x_full_":
96
+ completer = TermCompleter(['outer'])
97
+ elif state == "select_a_from_x_full_outer_":
98
+ completer = TermCompleter(['join'])
71
99
 
72
100
  elif state == "insert_":
73
101
  completer = TermCompleter(['into'])
@@ -196,6 +224,22 @@ class SqlCompleter(Completer):
196
224
  state = 'select_a_from_x_group'
197
225
  elif token.ttype == T.Keyword and token.value.lower() == 'group by':
198
226
  state = 'select_a_from_x_group_by'
227
+ elif token.ttype == T.Keyword and token.value.lower() == 'inner':
228
+ state = 'select_a_from_x_inner'
229
+ elif token.ttype == T.Keyword and token.value.lower() == 'inner join':
230
+ state = 'select_a_from_x_inner_join'
231
+ elif token.ttype == T.Keyword and token.value.lower() == 'left':
232
+ state = 'select_a_from_x_left'
233
+ elif token.ttype == T.Keyword and token.value.lower() in ['left join', 'left outer join']:
234
+ state = 'select_a_from_x_inner_join'
235
+ elif token.ttype == T.Keyword and token.value.lower() == 'right':
236
+ state = 'select_a_from_x_right'
237
+ elif token.ttype == T.Keyword and token.value.lower() in ['right join', 'right outer join']:
238
+ state = 'select_a_from_x_inner_join'
239
+ elif token.ttype == T.Keyword and token.value.lower() == 'full':
240
+ state = 'select_a_from_x_full'
241
+ elif token.ttype == T.Keyword and token.value.lower() == 'full outer join':
242
+ state = 'select_a_from_x_inner_join'
199
243
  elif state == 'select_a_from_x_where':
200
244
  if token.ttype == T.Text.Whitespace:
201
245
  state = 'select_a_from_x_where_'
@@ -216,6 +260,8 @@ class SqlCompleter(Completer):
216
260
  state = 'select_a_from_x_where'
217
261
  elif token.ttype == T.Keyword and token.value.lower() == 'group':
218
262
  state = 'select_a_from_x_group'
263
+ elif token.ttype == T.Keyword and token.value.lower() == 'group by':
264
+ state = 'select_a_from_x_group_by'
219
265
  elif token.ttype == T.Keyword and token.value.lower() == 'limit':
220
266
  state = 'select_a_from_x_where_id=v_limit'
221
267
  elif state == 'select_a_from_x_group':
@@ -244,6 +290,101 @@ class SqlCompleter(Completer):
244
290
  elif state == 'select_a_from_x_where_id=v_limit':
245
291
  if token.ttype == T.Text.Whitespace:
246
292
  state = 'select_a_from_x_where_id=v_limit_'
293
+ elif state == 'select_a_from_x_inner':
294
+ if token.ttype == T.Text.Whitespace:
295
+ state = 'select_a_from_x_inner_'
296
+ elif state == 'select_a_from_x_inner_':
297
+ if token.ttype == T.Keyword and token.value.lower() == 'join':
298
+ state = 'select_a_from_x_inner_join'
299
+ elif state == 'select_a_from_x_inner_join':
300
+ if token.ttype == T.Text.Whitespace:
301
+ state = 'select_a_from_x_inner_join_'
302
+ elif state == 'select_a_from_x_inner_join_':
303
+ if token.ttype == T.Name:
304
+ state = 'select_a_from_x_inner_join_y'
305
+
306
+ elif state == 'select_a_from_x_left':
307
+ if token.ttype == T.Text.Whitespace:
308
+ state = 'select_a_from_x_left_'
309
+ elif state == 'select_a_from_x_left_':
310
+ if token.ttype == T.Keyword and token.value.lower() == 'join':
311
+ state = 'select_a_from_x_inner_join'
312
+ elif token.ttype == T.Keyword and token.value.lower() == 'outer':
313
+ state = 'select_a_from_x_left_outer'
314
+ elif state == 'select_a_from_x_left_outer':
315
+ if token.ttype == T.Text.Whitespace:
316
+ state = 'select_a_from_x_left_outer_'
317
+ elif state == 'select_a_from_x_left_outer_':
318
+ if token.ttype == T.Keyword and token.value.lower() == 'join':
319
+ state = 'select_a_from_x_inner_join_'
320
+
321
+ elif state == 'select_a_from_x_right':
322
+ if token.ttype == T.Text.Whitespace:
323
+ state = 'select_a_from_x_right_'
324
+ elif state == 'select_a_from_x_right_':
325
+ if token.ttype == T.Keyword and token.value.lower() == 'join':
326
+ state = 'select_a_from_x_inner_join'
327
+ elif token.ttype == T.Keyword and token.value.lower() == 'outer':
328
+ state = 'select_a_from_x_right_outer'
329
+ elif state == 'select_a_from_x_right_outer':
330
+ if token.ttype == T.Text.Whitespace:
331
+ state = 'select_a_from_x_right_outer_'
332
+ elif state == 'select_a_from_x_right_outer_':
333
+ if token.ttype == T.Keyword and token.value.lower() == 'join':
334
+ state = 'select_a_from_x_inner_join_'
335
+
336
+ elif state == 'select_a_from_x_full':
337
+ if token.ttype == T.Text.Whitespace:
338
+ state = 'select_a_from_x_full_'
339
+ elif state == 'select_a_from_x_full_':
340
+ if token.ttype == T.Keyword and token.value.lower() == 'outer':
341
+ state = 'select_a_from_x_full_outer'
342
+ elif state == 'select_a_from_x_full_outer':
343
+ if token.ttype == T.Text.Whitespace:
344
+ state = 'select_a_from_x_full_outer_'
345
+ elif state == 'select_a_from_x_full_outer_':
346
+ if token.ttype == T.Keyword and token.value.lower() == 'join':
347
+ state = 'select_a_from_x_inner_join_'
348
+
349
+ elif state == 'select_a_from_x_inner_join_y':
350
+ if token.ttype == T.Punctuation and token.value == ',':
351
+ state = 'select_a_from_x_inner_join_y,'
352
+ elif token.ttype == T.Text.Whitespace:
353
+ state = 'select_a_from_x_inner_join_y_'
354
+ elif state == 'select_a_from_x_inner_join_y,':
355
+ if token.ttype == T.Name:
356
+ state = 'select_a_from_x_inner_join_y'
357
+ elif state == 'select_a_from_x_inner_join_y_':
358
+ if token.ttype == T.Keyword and token.value.lower() == 'on':
359
+ state = 'select_a_from_x_inner_join_y_on'
360
+ elif state == 'select_a_from_x_inner_join_y_on':
361
+ if token.ttype == T.Text.Whitespace:
362
+ state = 'select_a_from_x_inner_join_y_on_'
363
+ elif state == 'select_a_from_x_inner_join_y_on_':
364
+ if token.ttype == T.Name:
365
+ state = 'select_a_from_x_inner_join_y_on_a'
366
+ elif state == 'select_a_from_x_inner_join_y_on_a':
367
+ if token.ttype == T.Operator.Comparison:
368
+ state = 'select_a_from_x_inner_join_y_on_a='
369
+ elif state == 'select_a_from_x_inner_join_y_on_a=':
370
+ if token.ttype in [T.Literal.String.Single, T.Name]:
371
+ state = 'select_a_from_x_inner_join_y_on_a=b'
372
+ elif state == 'select_a_from_x_inner_join_y_on_a=b':
373
+ if token.ttype == T.Text.Whitespace:
374
+ state = 'select_a_from_x_inner_join_y_on_a=b_'
375
+ elif token.ttype == T.Punctuation and token.value == ',':
376
+ state = 'select_a_from_x_inner_join_y_on_'
377
+ elif state == 'select_a_from_x_inner_join_y_on_a=b_':
378
+ if token.ttype == T.Keyword and token.value.lower() in ['and', 'or']:
379
+ state = 'select_a_from_x_inner_join'
380
+ elif token.ttype == T.Keyword and token.value.lower() == 'where':
381
+ state = 'select_a_from_x_where'
382
+ elif token.ttype == T.Keyword and token.value.lower() == 'group':
383
+ state = 'select_a_from_x_group'
384
+ elif token.ttype == T.Keyword and token.value.lower() == 'group by':
385
+ state = 'select_a_from_x_group_by'
386
+ elif token.ttype == T.Keyword and token.value.lower() == 'limit':
387
+ state = 'select_a_from_x_where_id=v_limit'
247
388
 
248
389
  elif state == 'insert':
249
390
  if token.ttype == T.Text.Whitespace:
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ __version__ = "2.0.54" #: the working version
5
+ __release__ = "1.0.0" #: the release version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaqing
3
- Version: 2.0.52
3
+ Version: 2.0.54
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='kaqing',
5
- version='2.0.52',
5
+ version='2.0.54',
6
6
  packages=find_packages(),
7
7
  entry_points={
8
8
  'console_scripts': [
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
-
4
- __version__ = "2.0.52" #: the working version
5
- __release__ = "1.0.0" #: the release version
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes