@@ -185,133 +185,9 @@ char* wasm_normalize_query(const char* input) {
185185 return normalized ;
186186}
187187
188- EMSCRIPTEN_KEEPALIVE
189- char * wasm_scan_query (const char * input ) {
190- if (!validate_input (input )) {
191- return safe_strdup ("Invalid input: query cannot be null or empty" );
192- }
193-
194- PgQueryScanResult result = pg_query_scan (input );
195-
196- if (result .error ) {
197- if (strstr (input , "NOT A QUERY" )) {
198- pg_query_free_scan_result (result );
199- return safe_strdup ("Unexpected token ', ��\n �\"... is not valid JSON" );
200- }
201- char * error_msg = safe_strdup (result .error -> message );
202- pg_query_free_scan_result (result );
203- return error_msg ;
204- }
205-
206- if (result .pbuf .len == 0 ) {
207- pg_query_free_scan_result (result );
208- return safe_strdup ("{\"tokens\":[]}" );
209- }
210-
211- size_t input_len = strlen (input );
212- size_t buffer_size = 1024 + (input_len * 2 );
213- char * json_result = safe_malloc (buffer_size );
214- if (!json_result ) {
215- pg_query_free_scan_result (result );
216- return safe_strdup ("Memory allocation failed" );
217- }
218-
219- strcpy (json_result , "{\"tokens\":[" );
220-
221- const char * keywords [] = {"SELECT" , "FROM" , "WHERE" , "INSERT" , "UPDATE" , "DELETE" , "CREATE" , "DROP" , "ALTER" , "TABLE" , "id" , "users" };
222- const int num_keywords = sizeof (keywords ) / sizeof (keywords [0 ]);
223-
224- int token_count = 0 ;
225- for (int k = 0 ; k < num_keywords ; k ++ ) {
226- const char * pos = strstr (input , keywords [k ]);
227- if (pos ) {
228- int start = pos - input ;
229- int end = start + strlen (keywords [k ]);
230-
231- char token_json [128 ];
232- int written = snprintf (token_json , sizeof (token_json ),
233- "%s{\"token\":\"%s\",\"start\":%d,\"end\":%d}" ,
234- (token_count > 0 ) ? "," : "" ,
235- keywords [k ], start , end );
236-
237- if (written >= sizeof (token_json ) ||
238- strlen (json_result ) + strlen (token_json ) + 10 >= buffer_size ) {
239- free (json_result );
240- pg_query_free_scan_result (result );
241- return safe_strdup ("Buffer overflow prevented" );
242- }
243-
244- strcat (json_result , token_json );
245- token_count ++ ;
246- }
247- }
248-
249- strcat (json_result , "]}" );
250-
251- char * final_result = safe_strdup (json_result );
252- free (json_result );
253- pg_query_free_scan_result (result );
254- return final_result ? final_result : safe_strdup ("Memory allocation failed" );
255- }
256188
257- EMSCRIPTEN_KEEPALIVE
258- char * wasm_split_statements (const char * input ) {
259- if (!validate_input (input )) {
260- return safe_strdup ("Invalid input: query cannot be null or empty" );
261- }
262-
263- PgQuerySplitResult result = pg_query_split_with_parser (input );
264-
265- if (result .error ) {
266- char * error_msg = safe_strdup (result .error -> message );
267- pg_query_free_split_result (result );
268- return error_msg ;
269- }
270-
271- size_t base_size = 32 ;
272- size_t stmt_size = 0 ;
273- for (int i = 0 ; i < result .n_stmts ; i ++ ) {
274- stmt_size += 50 ;
275- }
276- size_t buffer_size = base_size + stmt_size ;
277-
278- char * json_result = safe_malloc (buffer_size );
279- if (!json_result ) {
280- pg_query_free_split_result (result );
281- return safe_strdup ("Memory allocation failed" );
282- }
283-
284- strcpy (json_result , "{\"stmts\":[" );
285-
286- for (int i = 0 ; i < result .n_stmts ; i ++ ) {
287- char stmt_json [128 ];
288- int written = snprintf (stmt_json , sizeof (stmt_json ),
289- "%s{\"stmt_location\":%d,\"stmt_len\":%d}" ,
290- (i > 0 ) ? "," : "" ,
291- result .stmts [i ]-> stmt_location ,
292- result .stmts [i ]-> stmt_len );
293-
294- if (written >= sizeof (stmt_json )) {
295- free (json_result );
296- pg_query_free_split_result (result );
297- return safe_strdup ("Statement JSON formatting failed" );
298- }
299-
300- if (strlen (json_result ) + strlen (stmt_json ) + 10 >= buffer_size ) {
301- free (json_result );
302- pg_query_free_split_result (result );
303- return safe_strdup ("Buffer size calculation error" );
304- }
305-
306- strcat (json_result , stmt_json );
307- }
308- strcat (json_result , "]}" );
309-
310- char * final_result = safe_strdup (json_result );
311- free (json_result );
312- pg_query_free_split_result (result );
313- return final_result ? final_result : safe_strdup ("Memory allocation failed" );
314- }
189+
190+
315191
316192typedef struct {
317193 int has_error ;
0 commit comments