MindsDB 25.2.1.2__py3-none-any.whl → 25.2.2.1__py3-none-any.whl

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.

Potentially problematic release.


This version of MindsDB might be problematic. Click here for more details.

Files changed (33) hide show
  1. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.1.dist-info}/METADATA +234 -230
  2. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.1.dist-info}/RECORD +33 -33
  3. mindsdb/__about__.py +1 -1
  4. mindsdb/api/executor/command_executor.py +1 -57
  5. mindsdb/api/executor/datahub/datanodes/system_tables.py +34 -33
  6. mindsdb/api/executor/planner/query_planner.py +7 -2
  7. mindsdb/api/executor/sql_query/steps/fetch_dataframe.py +19 -11
  8. mindsdb/api/executor/sql_query/steps/subselect_step.py +44 -2
  9. mindsdb/integrations/handlers/byom_handler/byom_handler.py +1 -1
  10. mindsdb/integrations/handlers/byom_handler/requirements.txt +1 -1
  11. mindsdb/integrations/handlers/file_handler/file_handler.py +13 -320
  12. mindsdb/integrations/handlers/file_handler/tests/test_file_handler.py +60 -156
  13. mindsdb/integrations/handlers/huggingface_handler/requirements.txt +1 -1
  14. mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt +1 -1
  15. mindsdb/integrations/handlers/lancedb_handler/requirements.txt +1 -1
  16. mindsdb/integrations/handlers/lightwood_handler/requirements.txt +3 -3
  17. mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py +3 -3
  18. mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_tables.py +2 -20
  19. mindsdb/integrations/handlers/salesforce_handler/connection_args.py +9 -1
  20. mindsdb/integrations/handlers/salesforce_handler/salesforce_handler.py +2 -1
  21. mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +1 -1
  22. mindsdb/integrations/handlers/writer_handler/requirements.txt +1 -1
  23. mindsdb/integrations/utilities/files/file_reader.py +120 -61
  24. mindsdb/integrations/utilities/handlers/api_utilities/microsoft/ms_graph_api_utilities.py +1 -8
  25. mindsdb/integrations/utilities/query_traversal.py +42 -37
  26. mindsdb/interfaces/agents/langfuse_callback_handler.py +205 -27
  27. mindsdb/interfaces/file/file_controller.py +1 -1
  28. mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py +12 -2
  29. mindsdb/utilities/config.py +2 -2
  30. mindsdb/utilities/render/sqlalchemy_render.py +52 -19
  31. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.1.dist-info}/LICENSE +0 -0
  32. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.1.dist-info}/WHEEL +0 -0
  33. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.1.dist-info}/top_level.txt +0 -0
@@ -1,11 +1,11 @@
1
- mindsdb/__about__.py,sha256=loiXi-H-4LoR9JDI7nUi01fLAE9DF7GRz3OkFKD9wd4,444
1
+ mindsdb/__about__.py,sha256=cXoHk72JCuA2YGQFO8tg_9d1m4nY9k7CitOwdgLfyKY,444
2
2
  mindsdb/__init__.py,sha256=fZopLiAYa9MzMZ0d48JgHc_LddfFKDzh7n_8icsjrVs,54
3
3
  mindsdb/__main__.py,sha256=VQ3RetGs34NhFRT9d76o5S3UpKxdr-G3c0138kz3f8Y,21435
4
4
  mindsdb/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  mindsdb/api/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  mindsdb/api/common/check_auth.py,sha256=cQEZqsnCbrRtUf8j4H6uPF98cDPu79t8TdtwBi5g30w,1345
7
7
  mindsdb/api/executor/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
8
- mindsdb/api/executor/command_executor.py,sha256=nvYmawT1JwwzmK02CoYPmqXeJaQLskGwKnKyhyR0aVU,80692
8
+ mindsdb/api/executor/command_executor.py,sha256=_2Y-WgEDdfh-nZSEb93Qp8tFl0Y-CgRJB-kQcUfec5k,78210
9
9
  mindsdb/api/executor/exceptions.py,sha256=SoxhetIKIVOAwbVP_NatfoKnwt-Xj2yFCiAIqSDxpIE,566
10
10
  mindsdb/api/executor/controllers/__init__.py,sha256=px47lPVKqfpqgcoEBHyWoax-ad01rNOTJQCgQmG0Flo,50
11
11
  mindsdb/api/executor/controllers/session_controller.py,sha256=2Jf-V0nj7k0aB4scujNVyx91h54odkDrdK1ydsCo46g,3072
@@ -21,13 +21,13 @@ mindsdb/api/executor/datahub/datanodes/information_schema_datanode.py,sha256=9gs
21
21
  mindsdb/api/executor/datahub/datanodes/integration_datanode.py,sha256=HowB1lnbs__qiVOE63uAuOqhDEj-2IcuiPh5bb3RgPg,9797
22
22
  mindsdb/api/executor/datahub/datanodes/mindsdb_tables.py,sha256=OQJbmzGLYzbA0v-_rwmzB5gvwpJVO0c9h6oNjeGjGPU,12554
23
23
  mindsdb/api/executor/datahub/datanodes/project_datanode.py,sha256=KAYGMEDY4hVf7hZtyB26ehEwu1SCooql3mtoaN0itHs,6336
24
- mindsdb/api/executor/datahub/datanodes/system_tables.py,sha256=puAzEVGfZCckan8febfdREtnO-lJYnP0a7T2GwRexGo,14388
24
+ mindsdb/api/executor/datahub/datanodes/system_tables.py,sha256=9WCgY8hodKrzwivRypN7Far5v8Z-A8-pVP_OAxC2jyc,14014
25
25
  mindsdb/api/executor/planner/__init__.py,sha256=Ysh8feXwejpVhJ9yDbrE_lBA3EsGqyWnrbIPdmtE1Oc,143
26
26
  mindsdb/api/executor/planner/exceptions.py,sha256=rvLQoFZgCpVsGWomSBdPeuOyr_6FM-QKmseVvUIw5E8,46
27
27
  mindsdb/api/executor/planner/plan_join.py,sha256=rZn21LGxWyRou4iVOpNpt9IY4TytPoIDJy8rfGqfhoE,22506
28
28
  mindsdb/api/executor/planner/plan_join_ts.py,sha256=LeQWq1dnhkLo36EaQG5B-EAlGfTFHT1szvEve75uMk8,16369
29
29
  mindsdb/api/executor/planner/query_plan.py,sha256=T2KAz19cYrtPwJp4JKAYU9WeBzFppCH3btAQZLknsNw,716
30
- mindsdb/api/executor/planner/query_planner.py,sha256=xJJWmhay9AHU3X28tPFZzuqSeoxnqvIgXV4KTRuboz4,30879
30
+ mindsdb/api/executor/planner/query_planner.py,sha256=8cKZPvHh9Iqjc5UA0ZSCzbR6YRBcNhM4L8bPlgY7fnM,31079
31
31
  mindsdb/api/executor/planner/query_prepare.py,sha256=ZH8fZ05tFMMy9aeuLU1R5F-ThSPtiGbvozoCZSNGz7A,16694
32
32
  mindsdb/api/executor/planner/step_result.py,sha256=t2xBRVSfqTRk4GY2JIi21cXSUiFlCw5hMbWRBSMtEjM,519
33
33
  mindsdb/api/executor/planner/steps.py,sha256=kB7FtJiUjiuDYk8a3qw_-EK4VKqcRZSr-udSTyctq6M,8830
@@ -40,7 +40,7 @@ mindsdb/api/executor/sql_query/steps/__init__.py,sha256=73K_wevliekB1qX5g6RW_TN6
40
40
  mindsdb/api/executor/sql_query/steps/apply_predictor_step.py,sha256=Qm_kVTg0fwXWIy26Atmie_bGNa0wQQ7mVengN6Zly2A,16305
41
41
  mindsdb/api/executor/sql_query/steps/base.py,sha256=xs3wOJ0fkqMRDNR5jDVaz23zeaD8wSF0L-JVC2WW7_E,557
42
42
  mindsdb/api/executor/sql_query/steps/delete_step.py,sha256=YsHVlszYDV2-kxCcMnaGUyf-m7clrFzw0h0o4ZCvZAU,1324
43
- mindsdb/api/executor/sql_query/steps/fetch_dataframe.py,sha256=3ciEmtczfTHDFhRwi1sgAwqt5Scl_QQxYeIrVlbfvv0,3643
43
+ mindsdb/api/executor/sql_query/steps/fetch_dataframe.py,sha256=uGilR7k9m8H6QJ5ackTQ78SROdnC54SDYvJWA8WhRuk,3879
44
44
  mindsdb/api/executor/sql_query/steps/insert_step.py,sha256=xjVSFzopHVW85sq5p5WVp4hcwkS3qdN8Ygc50jMjFJ0,3738
45
45
  mindsdb/api/executor/sql_query/steps/join_step.py,sha256=8wW7AmIMhMinpMovSgl-2CGujV3mDX5kTFLxuI1KZfQ,4261
46
46
  mindsdb/api/executor/sql_query/steps/map_reduce_step.py,sha256=v1TZy0FBjw_Bqxx-X2KP-jeqrun-FH4yilghiYhsQEM,4452
@@ -48,7 +48,7 @@ mindsdb/api/executor/sql_query/steps/multiple_step.py,sha256=jAwY8rGUOdecQNP5JSj
48
48
  mindsdb/api/executor/sql_query/steps/prepare_steps.py,sha256=QATZ17UHZe5h41jqJP0yicXMsr1B7ak4p7CLHogFbAA,1538
49
49
  mindsdb/api/executor/sql_query/steps/project_step.py,sha256=WQ23VkfWrVHKRnyy91Kh9uRI7Twb-IBvSQl2TZy_21w,2854
50
50
  mindsdb/api/executor/sql_query/steps/sql_steps.py,sha256=RXZ1L05H_MHwVNdf6qDbIStsDjG_3QxEr3wPuFtZMdM,891
51
- mindsdb/api/executor/sql_query/steps/subselect_step.py,sha256=Is5KeKzFUbuAkWsbPTU1Bs9o-Lmho5p7_ELPaDwjWTY,5353
51
+ mindsdb/api/executor/sql_query/steps/subselect_step.py,sha256=o7znv6v6mbtm1mrQpJBWHQeD8s02XDKiTSXHClNJDSE,7275
52
52
  mindsdb/api/executor/sql_query/steps/union_step.py,sha256=BTVFZz28sGPgbwDOb7pUQxDYC3_WVOjLGBz-9eAmC60,1947
53
53
  mindsdb/api/executor/sql_query/steps/update_step.py,sha256=0MeUNsgVsK4pm2VrwM2ZrRua2JFvUHGhvzwzXRc8I1o,4563
54
54
  mindsdb/api/executor/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -333,11 +333,11 @@ mindsdb/integrations/handlers/box_handler/icon.svg,sha256=LhDX_Yikte5esxe9qOtHNn
333
333
  mindsdb/integrations/handlers/box_handler/requirements.txt,sha256=FQc6GqJL5eYYA9-oPcRQbmJR0HrSmnSz-5Q82yiR2sE,11
334
334
  mindsdb/integrations/handlers/byom_handler/__about__.py,sha256=5MMwfPjVWxerbcXI564QKIUaYW43COokSWU8KBBlOEg,330
335
335
  mindsdb/integrations/handlers/byom_handler/__init__.py,sha256=Z7tZblShNgUwwbfWQrhQGIGJOcAIaJKd5TaWmRTk64c,503
336
- mindsdb/integrations/handlers/byom_handler/byom_handler.py,sha256=TbjxUi1nn5cGseaUTW4FNZv2yqYIqqoxFO0SbAIt1Bc,24818
336
+ mindsdb/integrations/handlers/byom_handler/byom_handler.py,sha256=uI-UN2XLx7jAx7PxqOO_vlWcluUpPJJ4GEYZ5jP9jno,24818
337
337
  mindsdb/integrations/handlers/byom_handler/connection_args.py,sha256=chqPtpiEBtko8kxS15ImkZ6Q3kuhv7vwOzV3JeyU4cU,522
338
338
  mindsdb/integrations/handlers/byom_handler/icon.svg,sha256=q8G2Qws-_E79MdxpSDHtNCqLwK0RWauNmRwGszIs_FE,2542
339
339
  mindsdb/integrations/handlers/byom_handler/proc_wrapper.py,sha256=GqOB8Zw4-SYsn4lu3tkYORaNfgM4bm0HMDPyOJtErKk,5644
340
- mindsdb/integrations/handlers/byom_handler/requirements.txt,sha256=h6O_RVhgcy3aggFmF8FpaGEzPbObfUEhoG3NeItFexc,27
340
+ mindsdb/integrations/handlers/byom_handler/requirements.txt,sha256=WIPqhfnSGN4zXV7N9gor-Mjk5xsua3vH9ENBltRP9dY,27
341
341
  mindsdb/integrations/handlers/cassandra_handler/__about__.py,sha256=rMC_DPK11JoHKA9UceTm_jkUOggj04XKkAUqw5P8wXg,347
342
342
  mindsdb/integrations/handlers/cassandra_handler/__init__.py,sha256=US2TGuaKp48HJX_ayeNypltbagOASrnKSSUsCMNjsl4,564
343
343
  mindsdb/integrations/handlers/cassandra_handler/cassandra_handler.py,sha256=HoQPp0Ox20BDCNB8rtrwAEoGLuh7gWDiP4YQC4_pQhU,787
@@ -607,11 +607,11 @@ mindsdb/integrations/handlers/faunadb_handler/tests/__init__.py,sha256=47DEQpj8H
607
607
  mindsdb/integrations/handlers/faunadb_handler/tests/test_faunadb_handler.py,sha256=JrgVIq6jucZjUCr8FpbC9ByJ3WdZGppZKHdovvFbNiw,1151
608
608
  mindsdb/integrations/handlers/file_handler/__about__.py,sha256=UavP5jJ_xWIaJ0oRsEANLulczZ0craaUb3XLfCSBmEc,331
609
609
  mindsdb/integrations/handlers/file_handler/__init__.py,sha256=46Hnm3ijRsYw95BkkBxHJK8k4h_2Te0j1W0r3-ptVCg,329
610
- mindsdb/integrations/handlers/file_handler/file_handler.py,sha256=eL4wugROFNBK7qcOvELrcx7cCBtkibZ-StQZCSBIn14,18363
610
+ mindsdb/integrations/handlers/file_handler/file_handler.py,sha256=r2EJh31dGygn6T6uiIDEQ1AStYeoExPOu-BF114kHmc,7638
611
611
  mindsdb/integrations/handlers/file_handler/icon.svg,sha256=hsXEvUzrO7WQMOPC83LYQt-FW0wey9TCj5EwiIJwKwk,565
612
612
  mindsdb/integrations/handlers/file_handler/requirements.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
613
613
  mindsdb/integrations/handlers/file_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
614
- mindsdb/integrations/handlers/file_handler/tests/test_file_handler.py,sha256=1F_6d9rjcwitp9J0SNMyR1BxTb8WLzLz_h20yw2FYaQ,15558
614
+ mindsdb/integrations/handlers/file_handler/tests/test_file_handler.py,sha256=zc4QU4knxYLNVRq-kKKTwaJqquDeisLvw9DDnDzLuBY,11866
615
615
  mindsdb/integrations/handlers/file_handler/tests/data/test.txt,sha256=SUG2Uw_Hmth51gyaCJyeyfAbFssHfsB3qWFcxBX_W1g,570
616
616
  mindsdb/integrations/handlers/financial_modeling_prep_handler/__about__.py,sha256=Dz6gPZVoxWJqMgte07pkMKtQq42u7qYtCiaxdHVgANw,392
617
617
  mindsdb/integrations/handlers/financial_modeling_prep_handler/__init__.py,sha256=AncBNXt6EECSYDNTlnkxkQ3_dfgEITMKaUUWjV-KSMY,537
@@ -776,8 +776,8 @@ mindsdb/integrations/handlers/huggingface_handler/__init__.py,sha256=f-LxhPOlZsX
776
776
  mindsdb/integrations/handlers/huggingface_handler/finetune.py,sha256=gDf5yC-ot2IZdONMIcQ5bEvKMtk-nci5OcSYmvmEGQg,8085
777
777
  mindsdb/integrations/handlers/huggingface_handler/huggingface_handler.py,sha256=2wSfHCnAFbiHco37Eq_1f71vwSfoZ_ntz9f-d7pmlvI,13620
778
778
  mindsdb/integrations/handlers/huggingface_handler/icon.svg,sha256=yU820GpXed8h9CloppHH0D1-EJjrorSLlbjciV91b9k,9064
779
- mindsdb/integrations/handlers/huggingface_handler/requirements.txt,sha256=37qtrMLnf8-qhODBYBZNpbqytCumfJ7SDDpc1QU8gVw,53
780
- mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt,sha256=OGoorRy7iZuqdLANapJ78O_kdCqVpTpGfqv24m5MHFE,178
779
+ mindsdb/integrations/handlers/huggingface_handler/requirements.txt,sha256=b06gV4B6G_4Jpu2_4wc2_TdvCOletzs0f3RAcNRB-Tk,58
780
+ mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt,sha256=QpOXH_fRN7ZmQSRi_DOZaC3-ArP-PnCePEiEy1VTw1c,183
781
781
  mindsdb/integrations/handlers/huggingface_handler/settings.py,sha256=1dAcKyjEcuK1LSktqK_5tPLJzQGCNTs0GR9CMe8qTvk,984
782
782
  mindsdb/integrations/handlers/ibm_cos_handler/__about__.py,sha256=wGXqgk6YqX5TxD4ZGaZDRvMF5G-3NIhSD8O5DhPlnHo,374
783
783
  mindsdb/integrations/handlers/ibm_cos_handler/__init__.py,sha256=e5IvCKw0wMTcbljak3k1JPFRFzpYIyEk5EBvxXB-apQ,666
@@ -850,7 +850,7 @@ mindsdb/integrations/handlers/lancedb_handler/__init__.py,sha256=nwShTdkEcKKhiDL
850
850
  mindsdb/integrations/handlers/lancedb_handler/connection_args.py,sha256=KtHvSBLPS9P7LKlXULwRlUTUCvpG69bES2DUL-e2xME,956
851
851
  mindsdb/integrations/handlers/lancedb_handler/icon.svg,sha256=UHDcgJDgSbA74qyN6dLXKquPHXjYHd93g-TyQlIR84s,3475
852
852
  mindsdb/integrations/handlers/lancedb_handler/lancedb_handler.py,sha256=zQik_f_QjArzSrla_uxwYPQIdiKIwnYZIIABQmI__Zc,12399
853
- mindsdb/integrations/handlers/lancedb_handler/requirements.txt,sha256=8AKaoOwfOlQy5_GN79GwKmSAMqf1JXhB0LmchBzNvpg,37
853
+ mindsdb/integrations/handlers/lancedb_handler/requirements.txt,sha256=yBw6h3zm01B_3qmewTg3ymJ1U_nRAenRda4t0i5wvTo,37
854
854
  mindsdb/integrations/handlers/lancedb_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
855
855
  mindsdb/integrations/handlers/lancedb_handler/tests/test_lancedb_handler.py,sha256=dHFnAMplZCfXk0DwpDM1gKIsG42vEypx9-51nRoCQZc,3351
856
856
  mindsdb/integrations/handlers/langchain_embedding_handler/__about__.py,sha256=CqrMPm5gho1vYeXuFNSisjwl32JpHR3IoKv3xw_7fx8,388
@@ -898,7 +898,7 @@ mindsdb/integrations/handlers/lightwood_handler/__init__.py,sha256=iW8kT1kCcBjfe
898
898
  mindsdb/integrations/handlers/lightwood_handler/functions.py,sha256=WkeI0J19WPh_36wZvezpnV2SW6wc9tEkumKil3qTB-4,9139
899
899
  mindsdb/integrations/handlers/lightwood_handler/icon.svg,sha256=q8G2Qws-_E79MdxpSDHtNCqLwK0RWauNmRwGszIs_FE,2542
900
900
  mindsdb/integrations/handlers/lightwood_handler/lightwood_handler.py,sha256=H-Xq0Zxc3hfGHGmmWSXkAmT79V_8R6DQ00nnPRUl-3M,23643
901
- mindsdb/integrations/handlers/lightwood_handler/requirements.txt,sha256=PYbKEcTXCOLhCYqJqceUy0mX2_0tpOVRpWjWu3ke6es,94
901
+ mindsdb/integrations/handlers/lightwood_handler/requirements.txt,sha256=lDcJLjnHmKIaJhJnzlHLn5miNYJo3lJ8PCu_fmf5_AA,91
902
902
  mindsdb/integrations/handlers/lightwood_handler/utils.py,sha256=3dEI41hsgCzt_GeyXQ5k4U-w_NEZ_sLpbChS0wywANw,2242
903
903
  mindsdb/integrations/handlers/lightwood_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
904
904
  mindsdb/integrations/handlers/lightwood_handler/tests/test_lightwood_handler.py,sha256=kQlcLZqpZEgn03-SMGOxHS5Z-2ayOO-wyaU_r4d-754,10985
@@ -1031,9 +1031,9 @@ mindsdb/integrations/handlers/monkeylearn_handler/requirements.txt,sha256=T_nkUv
1031
1031
  mindsdb/integrations/handlers/ms_one_drive_handler/__about__.py,sha256=rUQ0p9bqHSjpEgXe9T-Hq-bfGrMHIU5Rmiwt-orDOCk,369
1032
1032
  mindsdb/integrations/handlers/ms_one_drive_handler/__init__.py,sha256=vraI6WlfpNk0C_D0wQH7Wxxy7zpI57rOp2t2XPgHuSk,533
1033
1033
  mindsdb/integrations/handlers/ms_one_drive_handler/icon.svg,sha256=52dL1SJWSi44Z2hQUMEyyP8DUmhgUtjvsfN3HU2EBes,2430
1034
- mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py,sha256=MjvBXKUqrh3j9ikXNaEf45qVQfmFUAhjNN493rdvsfw,3490
1034
+ mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py,sha256=q3Qd-9bBYacurH_rV5cYpLUgrI0kvSHGSDoi_OnkeWY,3508
1035
1035
  mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_handler.py,sha256=8Xi8rKFWpEsDw5mzqgR7IW4wEbk-TBNqNqOj4350gL4,9333
1036
- mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_tables.py,sha256=5eqvh7tX6wepvteTgmDxikRoqmx4VIRWszQyM8tPdFc,3421
1036
+ mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_tables.py,sha256=_Lq02LB_4swYjmxiWX6i-K4sUtpHuI7-Njhzy_LY2zA,2791
1037
1037
  mindsdb/integrations/handlers/ms_teams_handler/__about__.py,sha256=CqqxMr2iXyNXzPfcrMnDpK7u7gC6tmYPkOYR3KBXgQM,357
1038
1038
  mindsdb/integrations/handlers/ms_teams_handler/__init__.py,sha256=btEl5YvlZMkMn3NR6eChKtfT31OQY1LBEII1qJ4hf7g,518
1039
1039
  mindsdb/integrations/handlers/ms_teams_handler/icon.svg,sha256=pso2BBOFF2aiAw28W9lBPnvnVeNib21kvrqfZnO_C0M,3934
@@ -1322,10 +1322,10 @@ mindsdb/integrations/handlers/s3_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_
1322
1322
  mindsdb/integrations/handlers/s3_handler/tests/test_s3_handler.py,sha256=WGH7BN3IsJMAA0YBSMWyghI2lnwfAN1Bwwc210eIb14,1249
1323
1323
  mindsdb/integrations/handlers/salesforce_handler/__about__.py,sha256=WLr4oUXEPsawa_y4oDxihsqN2iawkNDCbe4ttcF7WUQ,349
1324
1324
  mindsdb/integrations/handlers/salesforce_handler/__init__.py,sha256=nH_HnnS5cnDadXEy6ZiGuUPByT_JGu2Nrgx3Nzw0JCg,650
1325
- mindsdb/integrations/handlers/salesforce_handler/connection_args.py,sha256=u6y9-xPN_BCAGobuKuJcYdeVKSZ9ilnEhhtrmwU1rIY,1189
1325
+ mindsdb/integrations/handlers/salesforce_handler/connection_args.py,sha256=XF20-m222AxVvK751lWKV2tb3I1WkRrmR5AJ7qV9PtI,1498
1326
1326
  mindsdb/integrations/handlers/salesforce_handler/icon.svg,sha256=sL7XX_vF5Y7gLLklV1h17MXILGYz0f79VH915DQXyV0,8594
1327
1327
  mindsdb/integrations/handlers/salesforce_handler/requirements.txt,sha256=jPMerwJUBa5emh7WoOAwQkDxW88lk6wdLiDCCxIIbjk,14
1328
- mindsdb/integrations/handlers/salesforce_handler/salesforce_handler.py,sha256=iwb5gAwGpL8jtODH9SHDrCzvqklS5mqweph98SnARlE,6384
1328
+ mindsdb/integrations/handlers/salesforce_handler/salesforce_handler.py,sha256=uGPLIAbyAnB5cdei58zFniMQiGKAW6ZfIFmcWkWyeJI,6458
1329
1329
  mindsdb/integrations/handlers/salesforce_handler/salesforce_tables.py,sha256=VV80EeBk9AboUUAJYYtuYOByglUPbsocNdKYoFV4NJ8,5080
1330
1330
  mindsdb/integrations/handlers/sap_erp_handler/__about__.py,sha256=yXC_YavBeY0vTZvwkU4EN7DUijGMZ8m3jtQsftKwlhs,340
1331
1331
  mindsdb/integrations/handlers/sap_erp_handler/__init__.py,sha256=2rnUX-yeCkCgh4viBttHdG4o4HKJrVI3m82S8GJFCBU,531
@@ -1402,7 +1402,7 @@ mindsdb/integrations/handlers/snowflake_handler/__init__.py,sha256=tPpKf8KwyX2DI
1402
1402
  mindsdb/integrations/handlers/snowflake_handler/connection_args.py,sha256=7pnJbHpbXMZwQbAS4U7LJUk8OWLLpPN2_q9IPr7wpec,1778
1403
1403
  mindsdb/integrations/handlers/snowflake_handler/icon.svg,sha256=Syi1A_eltgZH6HjPuKi8bi9Pzf8T879RfVAZnNzK0Qo,4088
1404
1404
  mindsdb/integrations/handlers/snowflake_handler/requirements.txt,sha256=RC9MdPLYC6oRsCC2k5sLfgxDTEuEPvqe8OpyjMYEECs,63
1405
- mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py,sha256=0NpP-KVaxduKaAkb7yKA--WzdDTWhzyNrWW9BoxNF2o,11090
1405
+ mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py,sha256=m6ShR8yZYn7hxDkNRbe-AJDuNF9OlrfhrxCRM3f6Qqg,11098
1406
1406
  mindsdb/integrations/handlers/snowflake_handler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1407
1407
  mindsdb/integrations/handlers/snowflake_handler/tests/test_snowflake_handler.py,sha256=2_zTKNxqbvhzwVhU9JRmv5Chhh9rulGnMfj-GVIPA60,7369
1408
1408
  mindsdb/integrations/handlers/solace_handler/__about__.py,sha256=C-y1qVOGsPDdMEjUocH_juhmrpRwN2-U61sJT_lwzE0,354
@@ -1633,7 +1633,7 @@ mindsdb/integrations/handlers/writer_handler/evaluate.py,sha256=NWXfHO6YutIJ4tuM
1633
1633
  mindsdb/integrations/handlers/writer_handler/icon.svg,sha256=nx6KAU1Genn-XnAPvrucTZqU2MQC4WOBTaiImAP04Vg,1814
1634
1634
  mindsdb/integrations/handlers/writer_handler/ingest.py,sha256=4N783Eg2nqKwmt0Hf7Mgp_ieycw9mYuwMN_V52gJC18,338
1635
1635
  mindsdb/integrations/handlers/writer_handler/rag.py,sha256=KSkMYPZ9gRRGP4C47yhhRTsDJ7bqJ_FPUm9tI0-5WAY,415
1636
- mindsdb/integrations/handlers/writer_handler/requirements.txt,sha256=0eYhsiLDNUthXqJXXz9vkVIU4jfYx-iHSz9tm2W_4ro,99
1636
+ mindsdb/integrations/handlers/writer_handler/requirements.txt,sha256=lNCsHd4W-UUS9lDEAcO9QkCK9CWYV3eGbCjnHTl5YHI,97
1637
1637
  mindsdb/integrations/handlers/writer_handler/settings.py,sha256=dwihPL0hGY3AEcA_THVyG6mM3s99PYcID_JRV114iLU,2835
1638
1638
  mindsdb/integrations/handlers/writer_handler/writer_handler.py,sha256=cnwoyq1XIcvIaX5Zgm1SrWFJCIz0h6qiw1HJzix0wbI,6885
1639
1639
  mindsdb/integrations/handlers/xata_handler/__about__.py,sha256=g-EqC8OMmbjncIYQnLG-kaiLahhKCJZmBJCzLfUKLbY,331
@@ -1704,7 +1704,7 @@ mindsdb/integrations/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
1704
1704
  mindsdb/integrations/utilities/date_utils.py,sha256=TqCyde_jbknQnrJqYIkNwEHUg-dsjRElJZHX_UicYQk,2769
1705
1705
  mindsdb/integrations/utilities/handler_utils.py,sha256=UEgEckWFDZXLcu5AbBFrqPJuFFXgejDmDRkr6622CPc,2272
1706
1706
  mindsdb/integrations/utilities/install.py,sha256=wbg0pcIn8C8PEfjA45DmwueEZ5nX27t2YsLe1xXhC7s,5018
1707
- mindsdb/integrations/utilities/query_traversal.py,sha256=oUSsBCwDcMBr-vaUYH5I8koMPDpJDXe0ByxPD0EIG0g,9292
1707
+ mindsdb/integrations/utilities/query_traversal.py,sha256=XtAuZU58un1s40JMoxMZX0JzhBEqgsW95Ux1UqHGLgY,9882
1708
1708
  mindsdb/integrations/utilities/sql_utils.py,sha256=WHlXN3Zjn8kS-sh_jqv1Q6abM-8YocS4WCWzpcIqlhY,6713
1709
1709
  mindsdb/integrations/utilities/test_utils.py,sha256=eplCMcVjOsrXRhIhAUhgOPIt2zNiyUV67BYnJ2lvPiE,691
1710
1710
  mindsdb/integrations/utilities/time_series_utils.py,sha256=qWVqZaXW7gdVM3jJ6WWYt1VP4WoFmaKt7jhNU6OpMvE,8312
@@ -1714,11 +1714,11 @@ mindsdb/integrations/utilities/datasets/dataset.py,sha256=HjxaMAPuos3HaMsVsAm3q-
1714
1714
  mindsdb/integrations/utilities/datasets/question_answering/fda_style_qa.csv,sha256=uEOevZwKVjtPScjDVvWfTl4VLvDrhL7D9_9DoRJu7ic,6906
1715
1715
  mindsdb/integrations/utilities/datasets/question_answering/squad_v2_val_100_sample.csv,sha256=erj_BGVabfxDFi9TbTXSJ-OiixHRYnDzoJUJcWWeeQY,104035
1716
1716
  mindsdb/integrations/utilities/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1717
- mindsdb/integrations/utilities/files/file_reader.py,sha256=F9v0ix-Ym56GFnwE3bIaojY7hu5Vkz8_cB8oRBzPgQE,8233
1717
+ mindsdb/integrations/utilities/files/file_reader.py,sha256=Qb43LJY-Kbe6kyL63OFQcpvCmzBPiwtXOcKxUarUJe0,9794
1718
1718
  mindsdb/integrations/utilities/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1719
1719
  mindsdb/integrations/utilities/handlers/api_utilities/__init__.py,sha256=zkvVb54zxtn4_NSwqCD-SVQG_5JI9EYRygb6EABQu7g,43
1720
1720
  mindsdb/integrations/utilities/handlers/api_utilities/microsoft/__init__.py,sha256=xmcg0gXVY4WUIazM-aCjXXFikFonS6hI05GbdEs5_I8,56
1721
- mindsdb/integrations/utilities/handlers/api_utilities/microsoft/ms_graph_api_utilities.py,sha256=pwH6_oyXIv-Ng1eH8By7K3A4zu0jvQ6TXN2FYPwK6yc,5336
1721
+ mindsdb/integrations/utilities/handlers/api_utilities/microsoft/ms_graph_api_utilities.py,sha256=cNv-zkdParB87dKMd-jqf9p8YFyELtac4O19gX-yGMM,4959
1722
1722
  mindsdb/integrations/utilities/handlers/auth_utilities/__init__.py,sha256=lyJdlw4_MFt3w3Iue7npRGwjNPIHzZZGox4dNEXvVaE,139
1723
1723
  mindsdb/integrations/utilities/handlers/auth_utilities/exceptions.py,sha256=ZgrImndHmaGkTCcx2W-1SlQTWzv0IKCvQKvCLH5jE4g,259
1724
1724
  mindsdb/integrations/utilities/handlers/auth_utilities/google/__init__.py,sha256=badbjE9cfUwgdUzboBXksz8mLHi8pHW5eVr4xdhJYUo,150
@@ -1769,7 +1769,7 @@ mindsdb/interfaces/agents/callback_handlers.py,sha256=90mGvx6ZIXRA_PAoV6vf8OHjJN
1769
1769
  mindsdb/interfaces/agents/constants.py,sha256=JUXpSW5PZxDZ84BD9zqZpU8u2tI2kUjHLZ1kVcDM7tY,4556
1770
1770
  mindsdb/interfaces/agents/event_dispatch_callback_handler.py,sha256=-76yTtxTHO5AkFTtr_RvYfkdUROJHcKZx6KJDZvj_-M,1331
1771
1771
  mindsdb/interfaces/agents/langchain_agent.py,sha256=M4NsaCeUvu9grnAamMI1BqxvV3Cb7CsWYlsuymKQel8,27389
1772
- mindsdb/interfaces/agents/langfuse_callback_handler.py,sha256=EIea9jsKgcGANPCZpdLe929bJy85SVA_bjdsyPiwp_g,4900
1772
+ mindsdb/interfaces/agents/langfuse_callback_handler.py,sha256=-51IWB5U2_m71xx00IwSOAK6gJ2n-HD_CzbtbmEfbBQ,11598
1773
1773
  mindsdb/interfaces/agents/mindsdb_chat_model.py,sha256=9e_LxCKrCSOZWqURHWavw-FQUK9PLJ5O18IGYSHD9us,6051
1774
1774
  mindsdb/interfaces/agents/mindsdb_database_agent.py,sha256=lk7UyE7tK807GXLBDr4-b2VVFUUzDtpMx2GjVtywv3o,2459
1775
1775
  mindsdb/interfaces/agents/safe_output_parser.py,sha256=x2G27UPT42iVjjj44vGUVNPEUDSHH3nlKJwe3GZDh9A,1605
@@ -1788,7 +1788,7 @@ mindsdb/interfaces/database/log.py,sha256=tewoKWc-xvfbFC9RVaUUAjQGuRY__Lex8fbR_p
1788
1788
  mindsdb/interfaces/database/projects.py,sha256=0ZjcqpDf437FmRhUk4z8YJR3MaoxtwJH60uPusLbfPU,15077
1789
1789
  mindsdb/interfaces/database/views.py,sha256=CthbUly3OgOyFV8a-VRQwhjLh6I1LXbBUzMAcfu8USI,4404
1790
1790
  mindsdb/interfaces/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1791
- mindsdb/interfaces/file/file_controller.py,sha256=-CS3ocAJV_K2Bwb2p_RezEj2Bjnk8WKtCVmkqFYmxX4,4612
1791
+ mindsdb/interfaces/file/file_controller.py,sha256=9WgvdmPIHG-obJmYO9xVLKbW6tRZm_WkewSNdDR0yoU,4601
1792
1792
  mindsdb/interfaces/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1793
1793
  mindsdb/interfaces/functions/controller.py,sha256=8kyWA8TnMsRDyIl2s3JcvdGYeww4_Qmf-jYq_wwOYH4,6057
1794
1794
  mindsdb/interfaces/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1815,7 +1815,7 @@ mindsdb/interfaces/skills/sql_agent.py,sha256=QlhGaAPVrlFJYQB0x9jQMT4bqbs1QSBaVe
1815
1815
  mindsdb/interfaces/skills/custom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1816
1816
  mindsdb/interfaces/skills/custom/text2sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1817
1817
  mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_tool.py,sha256=n7r08idG9Qaa0C41HokUf-w72yyACoINOFKGgtNVHLA,1375
1818
- mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py,sha256=xDMSe00nxdYe0m-rQM-awJnb6j5A2uR9Ve_Zx0HPMcc,7002
1818
+ mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py,sha256=08WyJXYJ_hP7JYLvwaSWuJN6Q1PLgIAvh7bcgsV-0XU,7962
1819
1819
  mindsdb/interfaces/storage/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
1820
1820
  mindsdb/interfaces/storage/db.py,sha256=L-nXGVVkt4izM2VgORfCitLUg3xVup8nwLi7B9PyKCg,19351
1821
1821
  mindsdb/interfaces/storage/fs.py,sha256=4Nyo-h23UtZc2nz_LWyVzboC_e1jlU58aph1_en8MdE,21155
@@ -1894,7 +1894,7 @@ mindsdb/migrations/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
1894
1894
  mindsdb/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1895
1895
  mindsdb/utilities/auth.py,sha256=6ycLJgXySghgFdzK6emxdStElzt5aOPafjDCRR_g_q0,2336
1896
1896
  mindsdb/utilities/cache.py,sha256=6VV5BJ0EWPYK2h80KEM1ETMhw_OCgDKyU6Pejvj1s3E,7431
1897
- mindsdb/utilities/config.py,sha256=ezGcUAy2D9NiRd1mpLbZ2JyN5JSwAp7HR9Gm9MyZJ6I,20688
1897
+ mindsdb/utilities/config.py,sha256=kYzpQkbvGVtTJCHUUEEFzOWBplQ0gShK5B7lW1KA3M0,20691
1898
1898
  mindsdb/utilities/context.py,sha256=LyKNgtavQnAfZpaPHINhrA_9L_SjfURUBD9fZNtuQMQ,1813
1899
1899
  mindsdb/utilities/context_executor.py,sha256=6ByyeulMePEfRrGxR9vlKYF87R8z1wHFwc1GdfhlGCk,1946
1900
1900
  mindsdb/utilities/exception.py,sha256=q-9cwMLmQvuPpwdjRG0xNZ23z9cxHSfyT2295Rk6waA,1034
@@ -1929,9 +1929,9 @@ mindsdb/utilities/otel/metric_handlers/__init__.py,sha256=3jGsLt5KkdhqaAUUw8ALxE
1929
1929
  mindsdb/utilities/profiler/__init__.py,sha256=d4VXl80uSm1IotR-WwbBInPmLmACiK0AzxXGBA40I-0,251
1930
1930
  mindsdb/utilities/profiler/profiler.py,sha256=KCUtOupkbM_nCoof9MtiuhUzDGezx4a4NsBX6vGWbPA,3936
1931
1931
  mindsdb/utilities/render/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1932
- mindsdb/utilities/render/sqlalchemy_render.py,sha256=DXKn55Fyb-Bd8tpLL4UUbfsDJI1E03ER8urpaM1nlJI,28621
1933
- MindsDB-25.2.1.2.dist-info/LICENSE,sha256=ziqdjujs6WDn-9g3t0SISjHCBc2pLRht3gnRbQoXmIs,5804
1934
- MindsDB-25.2.1.2.dist-info/METADATA,sha256=DbLZsSt4kC2hWueUZl4E1shRgCk9XD4VSYU-i0rllL8,42706
1935
- MindsDB-25.2.1.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
1936
- MindsDB-25.2.1.2.dist-info/top_level.txt,sha256=10wPR96JDf3hM8aMP7Fz0lDlmClEP480zgXISJKr5jE,8
1937
- MindsDB-25.2.1.2.dist-info/RECORD,,
1932
+ mindsdb/utilities/render/sqlalchemy_render.py,sha256=-7iLVSXYcgta3p4Ihf2Si-D4aY2qFaD0b0Ea2wuqAHE,29816
1933
+ MindsDB-25.2.2.1.dist-info/LICENSE,sha256=ziqdjujs6WDn-9g3t0SISjHCBc2pLRht3gnRbQoXmIs,5804
1934
+ MindsDB-25.2.2.1.dist-info/METADATA,sha256=S1Hbsjgvm1aWQcrmBqYcJnawQIxhg2FjZR3MXXoLI08,42853
1935
+ MindsDB-25.2.2.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
1936
+ MindsDB-25.2.2.1.dist-info/top_level.txt,sha256=10wPR96JDf3hM8aMP7Fz0lDlmClEP480zgXISJKr5jE,8
1937
+ MindsDB-25.2.2.1.dist-info/RECORD,,
mindsdb/__about__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  __title__ = 'MindsDB'
2
2
  __package_name__ = 'mindsdb'
3
- __version__ = '25.2.1.2'
3
+ __version__ = '25.2.2.1'
4
4
  __description__ = "MindsDB's AI SQL Server enables developers to build AI tools that need access to real-time data to perform their tasks"
5
5
  __email__ = "jorge@mindsdb.com"
6
6
  __author__ = 'MindsDB Inc'
@@ -20,7 +20,6 @@ from mindsdb_sql_parser.ast import (
20
20
  DropTables,
21
21
  DropView,
22
22
  Explain,
23
- Function,
24
23
  Identifier,
25
24
  Insert,
26
25
  NativeQuery,
@@ -34,7 +33,6 @@ from mindsdb_sql_parser.ast import (
34
33
  Union,
35
34
  Update,
36
35
  Use,
37
- Variable,
38
36
  Tuple,
39
37
  )
40
38
 
@@ -70,7 +68,6 @@ from mindsdb_sql_parser.ast.mindsdb import (
70
68
 
71
69
  import mindsdb.utilities.profiler as profiler
72
70
 
73
- from mindsdb.integrations.utilities.query_traversal import query_traversal
74
71
  from mindsdb.api.executor.sql_query.result_set import Column, ResultSet
75
72
  from mindsdb.api.executor.sql_query import SQLQuery
76
73
  from mindsdb.api.executor.data_types.answer import ExecuteAnswer
@@ -108,7 +105,6 @@ from mindsdb.utilities.context import context as ctx
108
105
  from mindsdb.utilities.functions import mark_process, resolve_model_identifier, get_handler_install_message
109
106
  from mindsdb.utilities.exception import EntityExistsError, EntityNotExistsError
110
107
  from mindsdb.utilities import log
111
- from mindsdb.api.mysql.mysql_proxy.utilities import ErParseError
112
108
 
113
109
  logger = log.getLogger(__name__)
114
110
 
@@ -460,7 +456,7 @@ class ExecuteCommands:
460
456
  raise TableNotExistError(err_str)
461
457
  return self.answer_show_table_status(table_name)
462
458
  elif sql_category == "columns":
463
- is_full = statement.modes is not None and "full" in statement.modes
459
+ is_full = statement.modes is not None and "FULL" in statement.modes
464
460
  return self.answer_show_columns(
465
461
  statement.from_table,
466
462
  statement.where,
@@ -599,8 +595,6 @@ class ExecuteCommands:
599
595
  ):
600
596
  return ExecuteAnswer()
601
597
  elif type(statement) is Select:
602
- if statement.from_table is None:
603
- return self.answer_single_row_select(statement, database_name)
604
598
  query = SQLQuery(statement, session=self.session, database=database_name)
605
599
  return self.answer_select(query)
606
600
  elif type(statement) is Union:
@@ -1598,56 +1592,6 @@ class ExecuteCommands:
1598
1592
  query = SQLQuery(new_statement, session=self.session, database=database_name)
1599
1593
  return self.answer_select(query)
1600
1594
 
1601
- def answer_single_row_select(self, statement, database_name):
1602
-
1603
- def adapt_query(node, is_table, **kwargs):
1604
- if is_table:
1605
- return
1606
-
1607
- if isinstance(node, Identifier):
1608
- if node.parts[-1].lower() == "session_user":
1609
- return Constant(self.session.username, alias=node)
1610
- if node.parts[-1].lower() == '$$':
1611
- # NOTE: sinve version 9.0 mysql client sends query 'select $$'.
1612
- # Connection can be continued only if answer is parse error.
1613
- raise ErParseError(
1614
- "You have an error in your SQL syntax; check the manual that corresponds to your server "
1615
- "version for the right syntax to use near '$$' at line 1"
1616
- )
1617
-
1618
- if isinstance(node, Function):
1619
- function_name = node.op.lower()
1620
-
1621
- functions_results = {
1622
- "database": database_name,
1623
- "current_user": self.session.username,
1624
- "user": self.session.username,
1625
- "version": "8.0.17",
1626
- "current_schema": "public",
1627
- "connection_id": self.context.get('connection_id')
1628
- }
1629
- if function_name in functions_results:
1630
- return Constant(functions_results[function_name], alias=Identifier(parts=[function_name]))
1631
-
1632
- if isinstance(node, Variable):
1633
- var_name = node.value
1634
- column_name = f"@@{var_name}"
1635
- result = SERVER_VARIABLES.get(column_name)
1636
- if result is None:
1637
- logger.error(f"Unknown variable: {column_name}")
1638
- raise Exception(f"Unknown variable '{var_name}'")
1639
- else:
1640
- return Constant(result[0], alias=Identifier(parts=[column_name]))
1641
-
1642
- query_traversal(statement, adapt_query)
1643
-
1644
- statement.from_table = Identifier('t')
1645
- df = query_df(pd.DataFrame([[0]]), statement, session=self.session)
1646
-
1647
- return ExecuteAnswer(
1648
- data=ResultSet().from_df(df, table_name="")
1649
- )
1650
-
1651
1595
  def answer_show_create_table(self, table):
1652
1596
  columns = [
1653
1597
  Column(table_name="", name="Table", type=TYPES.MYSQL_TYPE_VAR_STRING),
@@ -1,6 +1,5 @@
1
1
 
2
2
  import pandas as pd
3
- from mindsdb_sql_parser.ast import BinaryOperation, Constant, Identifier, Select
4
3
  from mindsdb_sql_parser.ast.base import ASTNode
5
4
  from mindsdb.integrations.utilities.sql_utils import extract_comparison_conditions
6
5
 
@@ -13,6 +12,26 @@ from mindsdb.utilities import log
13
12
  logger = log.getLogger(__name__)
14
13
 
15
14
 
15
+ def _get_scope(query):
16
+ databases, tables = None, None
17
+ conditions = extract_comparison_conditions(query.where)
18
+ for op, arg1, arg2 in conditions:
19
+ if op == '=':
20
+ scope = [arg2]
21
+ elif op == 'in':
22
+ if not isinstance(arg2, list):
23
+ arg2 = [arg2]
24
+ scope = arg2
25
+ else:
26
+ continue
27
+
28
+ if arg1.lower() == 'table_schema':
29
+ databases = scope
30
+ elif arg1.lower() == 'table_name':
31
+ tables = scope
32
+ return databases, tables
33
+
34
+
16
35
  class Table:
17
36
 
18
37
  deletable: bool = False
@@ -73,33 +92,19 @@ class TablesTable(Table):
73
92
  @classmethod
74
93
  def get_data(cls, query: ASTNode = None, inf_schema=None, **kwargs):
75
94
 
76
- target_table = None
77
- if (
78
- type(query) is Select
79
- and type(query.where) is BinaryOperation
80
- and query.where.op == "and"
81
- ):
82
- for arg in query.where.args:
83
- if (
84
- type(arg) is BinaryOperation
85
- and arg.op == "="
86
- and type(arg.args[0]) is Identifier
87
- and arg.args[0].parts[-1].upper() == "TABLE_SCHEMA"
88
- and type(arg.args[1]) is Constant
89
- ):
90
- target_table = arg.args[1].value
91
- break
95
+ databases, _ = _get_scope(query)
92
96
 
93
97
  data = []
94
98
  for name in inf_schema.tables.keys():
95
- if target_table is not None and target_table != name:
99
+ if databases is not None and name not in databases:
96
100
  continue
97
101
  row = TablesRow(TABLE_TYPE=TABLES_ROW_TYPE.SYSTEM_VIEW, TABLE_NAME=name)
98
102
  data.append(row.to_list())
99
103
 
100
104
  for ds_name, ds in inf_schema.persis_datanodes.items():
101
- if target_table is not None and target_table != ds_name:
105
+ if databases is not None and ds_name not in databases:
102
106
  continue
107
+
103
108
  if hasattr(ds, 'get_tables_rows'):
104
109
  ds_tables = ds.get_tables_rows()
105
110
  else:
@@ -127,8 +132,9 @@ class TablesTable(Table):
127
132
  data.append(row.to_list())
128
133
 
129
134
  for ds_name in inf_schema.get_integrations_names():
130
- if target_table is not None and target_table != ds_name:
135
+ if databases is not None and ds_name not in databases:
131
136
  continue
137
+
132
138
  try:
133
139
  ds = inf_schema.get(ds_name)
134
140
  ds_tables = ds.get_tables()
@@ -139,8 +145,9 @@ class TablesTable(Table):
139
145
  logger.error(f"Can't get tables from '{ds_name}'")
140
146
 
141
147
  for project_name in inf_schema.get_projects_names():
142
- if target_table is not None and target_table != project_name:
148
+ if databases is not None and project_name not in databases:
143
149
  continue
150
+
144
151
  project_dn = inf_schema.get(project_name)
145
152
  project_tables = project_dn.get_tables()
146
153
  for row in project_tables:
@@ -279,16 +286,7 @@ class ColumnsTable(Table):
279
286
 
280
287
  result = []
281
288
 
282
- databases = None
283
- conditions = extract_comparison_conditions(query.where)
284
- for op, arg1, arg2 in conditions:
285
- if arg1.lower() == 'table_schema':
286
- if op == '=':
287
- databases = [arg2]
288
- elif op == 'in':
289
- if not isinstance(arg2, list):
290
- arg2 = [arg2]
291
- databases = arg2
289
+ databases, tables_names = _get_scope(query)
292
290
 
293
291
  if databases is None:
294
292
  databases = ['information_schema', 'mindsdb', 'files']
@@ -304,8 +302,11 @@ class ColumnsTable(Table):
304
302
  dn = inf_schema.get(db_name)
305
303
  if dn is None:
306
304
  continue
307
- for table_row in dn.get_tables():
308
- tables[table_row.TABLE_NAME] = dn.get_table_columns(table_row.TABLE_NAME)
305
+
306
+ if tables_names is None:
307
+ tables_names = [t.TABLE_NAME for t in dn.get_tables()]
308
+ for table_name in tables_names:
309
+ tables[table_name] = dn.get_table_columns(table_name)
309
310
 
310
311
  for table_name, table_columns in tables.items():
311
312
  for i, column in enumerate(table_columns):
@@ -1,5 +1,7 @@
1
1
  import copy
2
2
 
3
+ import pandas as pd
4
+
3
5
  from mindsdb_sql_parser import ast
4
6
  from mindsdb_sql_parser.ast import (
5
7
  Select, Identifier, Join, Star, BinaryOperation, Constant, Union, CreateTable,
@@ -12,7 +14,7 @@ from mindsdb.api.executor.planner.query_plan import QueryPlan
12
14
  from mindsdb.api.executor.planner.steps import (
13
15
  FetchDataframeStep, ProjectStep, ApplyPredictorStep,
14
16
  ApplyPredictorRowStep, UnionStep, GetPredictorColumns, SaveToTable,
15
- InsertToTable, UpdateToTable, SubSelectStep,
17
+ InsertToTable, UpdateToTable, SubSelectStep, QueryStep,
16
18
  DeleteStep, DataStep, CreateTableStep
17
19
  )
18
20
  from mindsdb.api.executor.planner.utils import (
@@ -746,7 +748,10 @@ class QueryPlanner:
746
748
  step = DataStep(from_table.data)
747
749
  last_step = self.plan.add_step(step)
748
750
  return self.plan_sub_select(query, last_step, add_absent_cols=True)
749
-
751
+ elif from_table is None:
752
+ # one line select
753
+ step = QueryStep(query, from_table=pd.DataFrame([None]))
754
+ self.plan.add_step(step)
750
755
  else:
751
756
  raise PlanningException(f'Unsupported from_table {type(from_table)}')
752
757
 
@@ -46,17 +46,25 @@ def get_table_alias(table_obj, default_db_name):
46
46
 
47
47
 
48
48
  def get_fill_param_fnc(steps_data):
49
- def fill_params(node, parent_query=None, **kwargs):
50
- if isinstance(node, BinaryOperation):
51
- if isinstance(node.args[1], Parameter):
52
- rs = steps_data[node.args[1].value.step_num]
53
- items = [Constant(i) for i in rs.get_column_values(col_idx=0)]
54
- if node.op == '=' and len(items) == 1:
55
- # extract one value for option 'col=(subselect)'
56
- node.args[1] = items[0]
57
- else:
58
- node.args[1] = Tuple(items)
59
- return node
49
+ def fill_params(node, callstack=None, **kwargs):
50
+ if isinstance(node, Parameter):
51
+ rs = steps_data[node.value.step_num]
52
+ items = [Constant(i) for i in rs.get_column_values(col_idx=0)]
53
+
54
+ is_single_item = True
55
+ if callstack:
56
+ node_prev = callstack[0]
57
+ if isinstance(node_prev, BinaryOperation):
58
+ # Check case: 'something IN Parameter()'
59
+ if node_prev.op.lower() == 'in' and node_prev.args[1] is node:
60
+ is_single_item = False
61
+
62
+ if is_single_item and len(items) == 1:
63
+ # extract one value for option 'col=(subselect)'
64
+ node = items[0]
65
+ else:
66
+ node = Tuple(items)
67
+ return node
60
68
 
61
69
  if isinstance(node, Parameter):
62
70
  rs = steps_data[node.value.step_num]
@@ -1,12 +1,19 @@
1
1
  from collections import defaultdict
2
2
 
3
+ import pandas as pd
4
+
3
5
  from mindsdb_sql_parser.ast import (
4
6
  Identifier,
5
7
  Select,
6
8
  Star,
7
9
  Constant,
8
- Parameter
10
+ Parameter,
11
+ Function,
12
+ Variable
9
13
  )
14
+
15
+ from mindsdb.api.mysql.mysql_proxy.libs.constants.mysql import SERVER_VARIABLES
16
+
10
17
  from mindsdb.api.executor.planner.step_result import Result
11
18
  from mindsdb.api.executor.planner.steps import SubSelectStep, QueryStep
12
19
  from mindsdb.integrations.utilities.query_traversal import query_traversal
@@ -84,7 +91,10 @@ class QueryStepCall(BaseStepCall):
84
91
  query = step.query
85
92
 
86
93
  if step.from_table is not None:
87
- result_set = self.steps_data[step.from_table.step_num]
94
+ if isinstance(step.from_table, pd.DataFrame):
95
+ result_set = ResultSet().from_df(step.from_table)
96
+ else:
97
+ result_set = self.steps_data[step.from_table.step_num]
88
98
  else:
89
99
  # only from_table can content result
90
100
  prev_step_num = query.from_table.value.step_num
@@ -109,6 +119,28 @@ class QueryStepCall(BaseStepCall):
109
119
 
110
120
  # analyze condition and change name of columns
111
121
  def check_fields(node, is_target=None, **kwargs):
122
+ if isinstance(node, Function):
123
+ function_name = node.op.lower()
124
+
125
+ functions_results = {
126
+ "database": self.session.database,
127
+ "current_user": self.session.username,
128
+ "user": self.session.username,
129
+ "version": "8.0.17",
130
+ "current_schema": "public",
131
+ "connection_id": self.context.get('connection_id')
132
+ }
133
+ if function_name in functions_results:
134
+ return Constant(functions_results[function_name], alias=Identifier(parts=[function_name]))
135
+
136
+ if isinstance(node, Variable):
137
+ var_name = node.value
138
+ column_name = f"@@{var_name}"
139
+ result = SERVER_VARIABLES.get(column_name)
140
+ if result is None:
141
+ raise ValueError(f"Unknown variable '{var_name}'")
142
+ else:
143
+ return Constant(result[0], alias=Identifier(parts=[column_name]))
112
144
 
113
145
  if isinstance(node, Identifier):
114
146
  # only column name
@@ -125,6 +157,16 @@ class QueryStepCall(BaseStepCall):
125
157
  for col in tbl_idx.get(table_name, [])
126
158
  ]
127
159
 
160
+ if node.parts[-1].lower() == "session_user":
161
+ return Constant(self.session.username, alias=node)
162
+ if node.parts[-1].lower() == '$$':
163
+ # NOTE: sinve version 9.0 mysql client sends query 'select $$'.
164
+ # Connection can be continued only if answer is parse error.
165
+ raise ValueError(
166
+ "You have an error in your SQL syntax; check the manual that corresponds to your server "
167
+ "version for the right syntax to use near '$$' at line 1"
168
+ )
169
+
128
170
  if len(node.parts) == 1:
129
171
  key = col_name
130
172
  if key in aliases:
@@ -575,7 +575,7 @@ class ModelWrapperSafe:
575
575
  modules.append('numpy<2.0.0')
576
576
 
577
577
  # for dataframe serialization
578
- modules.append('pyarrow==14.0.1')
578
+ modules.append('pyarrow==19.0.0')
579
579
  return modules
580
580
 
581
581
  def install_modules(self, modules, pip_cmd):
@@ -1,2 +1,2 @@
1
1
  virtualenv
2
- pyarrow==14.0.1
2
+ pyarrow==19.0.0