Not able to use exported c function as custom function in query
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- javascript, sqlite, wasm
Rechercherichtung
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.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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 ?
- Vorherrschende Sprache
- JavaScript
- Sterne
- 13.7k
- Forks
- 1.1k
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus sql-js/sql.js
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 45/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
Ähnliche Issues
-
code-quality refactoring
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
langchain-ai/deepagents#6450 ·
-
optimization optimization:agents-md-curator
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
githubnext/gh-aw-cao#13143 ·
-
status: needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100