MindsDB 25.2.1.2__py3-none-any.whl → 25.2.2.0__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 (23) hide show
  1. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.0.dist-info}/METADATA +223 -223
  2. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.0.dist-info}/RECORD +23 -23
  3. mindsdb/__about__.py +1 -1
  4. mindsdb/api/executor/command_executor.py +0 -56
  5. mindsdb/api/executor/planner/query_planner.py +7 -2
  6. mindsdb/api/executor/sql_query/steps/fetch_dataframe.py +19 -11
  7. mindsdb/api/executor/sql_query/steps/subselect_step.py +44 -2
  8. mindsdb/integrations/handlers/file_handler/file_handler.py +13 -320
  9. mindsdb/integrations/handlers/file_handler/tests/test_file_handler.py +60 -156
  10. mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py +3 -3
  11. mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_tables.py +2 -20
  12. mindsdb/integrations/handlers/salesforce_handler/connection_args.py +9 -1
  13. mindsdb/integrations/handlers/salesforce_handler/salesforce_handler.py +2 -1
  14. mindsdb/integrations/utilities/files/file_reader.py +120 -61
  15. mindsdb/integrations/utilities/handlers/api_utilities/microsoft/ms_graph_api_utilities.py +1 -8
  16. mindsdb/integrations/utilities/query_traversal.py +42 -37
  17. mindsdb/interfaces/agents/langfuse_callback_handler.py +205 -27
  18. mindsdb/interfaces/file/file_controller.py +1 -1
  19. mindsdb/utilities/config.py +2 -2
  20. mindsdb/utilities/render/sqlalchemy_render.py +52 -19
  21. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.0.dist-info}/LICENSE +0 -0
  22. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.0.dist-info}/WHEEL +0 -0
  23. {MindsDB-25.2.1.2.dist-info → MindsDB-25.2.2.0.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=elArHLWXLa0sWr7cffvwoRFQIOpKcs-In00uySlBHGk,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=ywHyqQnX6FvoyFTmQ068-K6IPuBtoZeu-ujz3BZhtdY,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
@@ -27,7 +27,7 @@ mindsdb/api/executor/planner/exceptions.py,sha256=rvLQoFZgCpVsGWomSBdPeuOyr_6FM-
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
@@ -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
@@ -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
@@ -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
@@ -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.0.dist-info/LICENSE,sha256=ziqdjujs6WDn-9g3t0SISjHCBc2pLRht3gnRbQoXmIs,5804
1934
+ MindsDB-25.2.2.0.dist-info/METADATA,sha256=TyPbUu3lzGhje1vi-S4hEJ-HYE0GqiYKeHI7KoTDaU0,42706
1935
+ MindsDB-25.2.2.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
1936
+ MindsDB-25.2.2.0.dist-info/top_level.txt,sha256=10wPR96JDf3hM8aMP7Fz0lDlmClEP480zgXISJKr5jE,8
1937
+ MindsDB-25.2.2.0.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.0'
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
 
@@ -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,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: