HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: //proc/2165/cwd/node_modules/better-sqlite3/src/util/query-macros.cpp
#define STATEMENT_BIND(handle)                                                 \
	Binder binder(handle);                                                     \
	if (!binder.Bind(info, info.Length(), stmt)) {                             \
		sqlite3_clear_bindings(handle);                                        \
		return;                                                                \
	} ((void)0)

#define STATEMENT_THROW_LOGIC()                                                \
	db->ThrowDatabaseError();                                                  \
	if (!bound) { sqlite3_clear_bindings(handle); }                            \
	return

#define STATEMENT_RETURN_LOGIC(return_value)                                   \
	info.GetReturnValue().Set(return_value);                                   \
	if (!bound) { sqlite3_clear_bindings(handle); }                            \
	return

#define STATEMENT_START_LOGIC(RETURNS_DATA_CHECK, MUTATE_CHECK)                \
	Statement* stmt = Unwrap<Statement>(info.This());                          \
	RETURNS_DATA_CHECK();                                                      \
	sqlite3_stmt* handle = stmt->handle;                                       \
	Database* db = stmt->db;                                                   \
	REQUIRE_DATABASE_OPEN(db->GetState());                                     \
	REQUIRE_DATABASE_NOT_BUSY(db->GetState());                                 \
	MUTATE_CHECK();                                                            \
	const bool bound = stmt->bound;                                            \
	if (!bound) {                                                              \
		STATEMENT_BIND(handle);                                                \
	} else if (info.Length() > 0) {                                            \
		return ThrowTypeError("This statement already has bound parameters");  \
	} ((void)0)


#define STATEMENT_THROW() db->GetState()->busy = false; STATEMENT_THROW_LOGIC()
#define STATEMENT_RETURN(x) db->GetState()->busy = false; STATEMENT_RETURN_LOGIC(x)
#define STATEMENT_START(x, y)                                                  \
	STATEMENT_START_LOGIC(x, y);                                               \
	db->GetState()->busy = true;                                               \
	UseIsolate;                                                                \
	if (db->Log(isolate, handle)) {                                            \
		STATEMENT_THROW();                                                     \
	} ((void)0)


#define DOES_NOT_MUTATE() REQUIRE_STATEMENT_NOT_LOCKED(stmt)
#define DOES_MUTATE()                                                          \
	REQUIRE_STATEMENT_NOT_LOCKED(stmt);                                        \
	REQUIRE_DATABASE_NO_ITERATORS_UNLESS_UNSAFE(db->GetState())
#define DOES_ADD_ITERATOR()                                                    \
	DOES_NOT_MUTATE();                                                         \
	if (db->GetState()->iterators == USHRT_MAX)                                \
		return ThrowRangeError("Too many active database iterators")
#define REQUIRE_STATEMENT_RETURNS_DATA()                                       \
	if (!stmt->returns_data)                                                   \
		return ThrowTypeError("This statement does not return data. Use run() instead")
#define ALLOW_ANY_STATEMENT()                                                  \
	((void)0)


#define _FUNCTION_START(type)                                                  \
	type* self = static_cast<type*>(sqlite3_user_data(invocation));            \
	v8::Isolate* isolate = self->isolate;                                      \
	v8::HandleScope scope(isolate)

#define FUNCTION_START()                                                       \
	_FUNCTION_START(CustomFunction)

#define AGGREGATE_START()                                                      \
	_FUNCTION_START(CustomAggregate);                                          \
	Accumulator* acc = self->GetAccumulator(invocation);                       \
	if (acc->value.IsEmpty()) return