Not able to use exported c function as custom function in query
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 13.7k
- Forks
- 1.1k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
I wrote a c function and compiled using the command
emcc lib/alternate_case.c -s WASM=1 -s EXPORTED_FUNCTIONS="['_alternatecase']" -s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' -s ASSERTIONS=1 -o public/alternate_case.js
Here is my C function
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<emscripten.h>
int main() {
return 1;
}
char * alternatecase(char *str) {
char *initial_ptr;
initial_ptr = str;
for (int i=0; i < *str!='\0' ; i++){
if( (i % 2) == 0)
*str = tolower(*str);
else
*str = toupper(*str);
str++;
}
return initial_ptr;
}
Index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My first Web Assembly Demo</title>
</head>
<body>
<h1> MY first web assembly demo</h1>
Output is in Javascript console
<main>
<button id="execute" class="button">Execute</button>
<pre id="output"> Results will be displayed here </pre>
</main>
</body>
<script src='/dist/sql-wasm.js'></script>
<script src='alternate_case.js'></script>
<script type="text/javascript" src="exporting-c-function.js"></script>
</html>
I took the sql-wasm.js from this repository. alternate_case.js is the compiled file from emcc.
This is the exporting-c-function.js
config = {
locateFile: filename => `dist/sql-wasm.wasm`
}
initSqlJs(config).then(function(SQL){
//Create the database
var db = new SQL.Database();
// Run a query without reading the results
const func = cwrap('alternatecase','string', ['string']);
db.create_function("altcase" , func)
sqlstr = "CREATE TABLE hello (a int, b char);";
sqlstr += "INSERT INTO hello VALUES (0, 'hello');"
sqlstr += "INSERT INTO hello VALUES (1, 'world');"
db.run(sqlstr); // Run the query without returning anything
//db.run("INSERT INTO hello VALUES (alternatecase('awdqwdq'));"); // Inserts 10 and 'Hello world'
db.run('SELECT altcase(b) from hello;');
});
It is throwing this error in the console
Error: wrong number of arguments to function altcase()
And it accepts only 0 arguments.
Note: if I try from browser console , I am able to use the function and get the output.
How to use this as custom function?
Also how to create custom function in web workers and use it ?
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Start with exporting-c-function.js and its create_function call, then compare the alternate_case.c export and compiled alternate_case.js with the sql-wasm.js integration. Reproduce SELECT altcase(b) after database initialization and inspect the custom-function and web-worker entry points mentioned in the report. Done means the function accepts the selected column argument and the worker usage has a clear, working path.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, sqlite, wasm
- Área
- database, web-dev
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 35/100