Not able to use exported c function as custom function in query
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- javascript, sqlite, wasm
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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 ?
- Linguagem predominante
- JavaScript
- Estrelas
- 13.7k
- Forks
- 1.1k
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de sql-js/sql.js
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
-
Add the WebWorker API docs Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 45/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
Todas as issues de sql-js/sql.js
Issues semelhantes
-
Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Automattic/safe-publish#594 ·
-
内部文件键(绝对路径的 base64)泄漏到界面标签 Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
dream-num/dsh-univer-office#104 ·
-
comp/dashboard invalid P3
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
NousResearch/hermes-agent#121143 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
avniproject/avni-webapp#1811 ·
-
area/auroraboot area/webui bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100