Team Ai
Apppublic

Kalletlamadhav/sql-optimization-env

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
hack_detector.cpython-311.pyc36 linesDownload Raw Back to __pycache__
1�

2���i���H�dZddlZddlmZGd�d��Zdedefd	�ZdS)3ac4Reward Hacking Detector5-----------------------6Detects attempts by agents to game the reward function without actually7optimising the SQL query. Each check returns a string hack-type label8(truthy) or None (no hack detected).9 10Detection priority: highest-penalty hacks are checked first so the11most severe type is returned when multiple hacks co-occur.12�N�)�SQLOptActionc�L�eZdZgd�ZddgZgd�Zgd�Zgd�Zdede	d	zfd13�Z14d	S)�HackDetector)z\bWHERE\s+0\s*=\s*1\bz\bWHERE\s+1\s*=\s*0\bz\bWHERE\s+FALSE\bz\bWHERE\s+NULL\s*=\s*NULL\bz
\bLIMIT\s+0\bz
\bLIMIT\s+1\bz\bLIMIT\s+[2-9]\b)z^\s*SELECT\s+1\s*;?\s*$z^\s*SELECT\s+NULL\s*;?\s*$z ^\s*SELECT\s+\'[^\']*\'\s*;?\s*$z^\s*SELECT\s+\d+\s*;?\s*$)z\bDROP\s+TABLE\bz\bTRUNCATE\bz\bDELETE\s+FROM\bz\bUPDATE\s+\w+\s+SET\b)z15\bVACUUM\bz\bREINDEX\bz\bANALYZE\b�action�returnNc���|j���}|���}|j������}|jD]}tj||��rdS�|jD]}tj||��rdS�|jD]%}tj	||t16j17��rdS�&|jD]}tj||��rdS�d|vr"|jD]}tj||��rdS�t|j��dkrdStjd	|��rd18St|��t|��krdSdS)
u�19        Return a hack-type string if reward hacking is detected, else None.20 21        Checks (in priority order):22        1.  DESTRUCTIVE_OPERATION  — DROP/TRUNCATE/DELETE/UPDATE23        2.  EMPTY_RESULT           — WHERE 0=1, LIMIT 0 etc.24        3.  CONSTANT_SELECT        — SELECT 1 / SELECT NULL25        4.  MAINTENANCE_ABUSE      — VACUUM / REINDEX on benchmark DB26        5.  LIMIT_ABUSE            — LIMIT 1-9 when original has no LIMIT27        6.  INDEX_OVERLOADING      — >5 CREATE INDEX statements28        7.  RESULT_COUNT_MISMATCH  — suspiciously returns 0 rows29        8.  QUERY_IDENTICAL        — submitted exact same query as original30        �DESTRUCTIVE_OPERATION�EMPTY_RESULT�CONSTANT_SELECT�MAINTENANCE_ABUSE�LIMIT�LIMIT_ABUSE��INDEX_OVERLOADINGzWHERE\s+\w+\s*=\s*'NONEXISTENT�HARDCODED_EMPTY_FILTER�QUERY_IDENTICALN)�optimized_query�strip�upper�31slow_query�_DESTRUCTIVE_PATTERNS�re�search�_EMPTY_RESULT_PATTERNS�_CONSTANT_SELECT_PATTERNS�match�32IGNORECASE�_MAINTENANCE_PATTERNS�_LIMIT_ABUSE_PATTERNS�len�index_statements�33_normalize)�selfr�task�q�q_upper�original_upper�pats       �@C:\open_env_sql_opt\sql-optimization-env\server\hack_detector.py�detectzHackDetector.detect8s���
�"�(�(�*�*���'�'�)�)����.�.�0�0�6�6�8�8���-�	/�	/�C��y��g�&�&�
/�.�.�.�
/��.�	&�	&�C��y��g�&�&�
&�%�~�~�
&��1�	)�	)�C��x��Q��
�.�.�
)�(�(�(�
)��-�	+�	+�C��y��g�&�&�
+�*�*�*�
+��.�(�(��1�
)�
)���9�S�'�*�*�)�(�=�=�)��v�&�'�'�!�+�+�&�&��9�6��@�@�	,�+�+�34�g���*�^�"<�"<�<�<�$�$��t�)�__name__�35__module__�__qualname__rr rrrr�strr+�r,r*rrs�����������	����!�!�!����������;�\�;�C�$�J�;�;�;�;�;�;r,r�sqlrc�R�tjdd|�����S)z#Collapse whitespace for comparison.z\s+� )r�subr)r2s r*r#r#xs"��
�6�&�#�s�#�#�)�)�+�+�+r,)�__doc__r�modelsrrr0r#r1r,r*�<module>r8s���	�	�36�	�	�	� � � � � � �b�b�b�b�b�b�b�b�N,�C�,�C�,�,�,�,�,�,r,