Skip to content

Commit d70394b

Browse files
Remove wasm_scan_query and wasm_split_statements functions
- Remove wasm_scan_query and wasm_split_statements from src/wasm_wrapper.c - Delete test/scan.test.js and test/split.test.js test files - Remove function exports from Makefile EXPORTED_FUNCTIONS - Remove JavaScript wrapper implementations from wasm/index.js and wasm/index.cjs - Remove documentation references from C.md - All remaining 32 tests pass successfully after removal Co-Authored-By: Dan Lynch <[email protected]>
1 parent a303b88 commit d70394b

File tree

7 files changed

+3
-416
lines changed

7 files changed

+3
-416
lines changed

C.md

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -168,43 +168,7 @@ char* wasm_normalize_query(const char* input) {
168168
}
169169
```
170170
171-
**Query Scanning/Tokenization**:
172-
```c
173-
EMSCRIPTEN_KEEPALIVE
174-
char* wasm_scan_query(const char* input) {
175-
PgQueryScanResult result = pg_query_scan(input);
176-
177-
if (result.error) {
178-
char* error_msg = strdup(result.error->message);
179-
pg_query_free_scan_result(result);
180-
return error_msg;
181-
}
182-
183-
// Convert protobuf to JSON or return raw protobuf
184-
// Implementation depends on desired output format
185-
pg_query_free_scan_result(result);
186-
return NULL; // Placeholder
187-
}
188-
```
189171
190-
**Statement Splitting**:
191-
```c
192-
EMSCRIPTEN_KEEPALIVE
193-
char* wasm_split_statements(const char* input) {
194-
PgQuerySplitResult result = pg_query_split_with_parser(input);
195-
196-
if (result.error) {
197-
char* error_msg = strdup(result.error->message);
198-
pg_query_free_split_result(result);
199-
return error_msg;
200-
}
201-
202-
// Convert split results to JSON
203-
// Implementation needed
204-
pg_query_free_split_result(result);
205-
return NULL; // Placeholder
206-
}
207-
```
208172
209173
### 4. Enhanced Error Handling
210174

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ ifdef EMSCRIPTEN
5555
$(CXXFLAGS) \
5656
-I$(LIBPG_QUERY_DIR) \
5757
-L$(LIBPG_QUERY_DIR) \
58-
-sEXPORTED_FUNCTIONS="['_malloc','_free','_wasm_parse_query','_wasm_parse_query_protobuf','_wasm_get_protobuf_len','_wasm_deparse_protobuf','_wasm_parse_plpgsql','_wasm_fingerprint','_wasm_normalize_query','_wasm_scan_query','_wasm_split_statements','_wasm_parse_query_detailed','_wasm_free_detailed_result','_wasm_free_string']" \
58+
-sEXPORTED_FUNCTIONS="['_malloc','_free','_wasm_parse_query','_wasm_parse_query_protobuf','_wasm_get_protobuf_len','_wasm_deparse_protobuf','_wasm_parse_plpgsql','_wasm_fingerprint','_wasm_normalize_query','_wasm_parse_query_detailed','_wasm_free_detailed_result','_wasm_free_string']" \
5959
-sEXPORTED_RUNTIME_METHODS="['lengthBytesUTF8','stringToUTF8','UTF8ToString','HEAPU8','HEAPU32']" \
6060
-sEXPORT_NAME="$(WASM_MODULE_NAME)" \
6161
-sENVIRONMENT="web,node" \

src/wasm_wrapper.c

Lines changed: 2 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -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

316192
typedef struct {
317193
int has_error;

test/scan.test.js

Lines changed: 0 additions & 60 deletions
This file was deleted.

test/split.test.js

Lines changed: 0 additions & 63 deletions
This file was deleted.

0 commit comments

Comments
 (0)