SQLRETURN InitSession()

in language-extensions/java/src/javaextension.cpp [124:193]


SQLRETURN InitSession(
	SQLGUID      SessionId,
	SQLUSMALLINT TaskId,
	SQLUSMALLINT NumTasks,
	SQLCHAR      *Script,
	SQLULEN      ScriptLength,
	SQLUSMALLINT InputSchemaColumnsNumber,
	SQLUSMALLINT ParametersNumber,
	SQLCHAR      *InputDataName,
	SQLUSMALLINT InputDataNameLength,
	SQLCHAR      *OutputDataName,
	SQLUSMALLINT OutputDataNameLength
	)
{
	string msg = "JavaExtension::InitSession";
	LOG(msg);

	SQLRETURN result = SQL_SUCCESS;

	try
	{
		if (g_env == nullptr)
		{
			throw runtime_error("Function InitSession() called before extension is initialized");
		}

		g_sessionData = new JavaSession();

		string guidToString = JniTypeHelper::ConvertGuidToString(&SessionId);

		msg = "Starting session: " + guidToString + " with task id: " +
			  to_string(TaskId) + ".";
		LOG(msg);

		g_sessionData->Init(g_env,
							SessionId,
							TaskId,
							NumTasks,
							Script,
							ScriptLength,
							InputSchemaColumnsNumber,
							ParametersNumber,
							InputDataName,
							InputDataNameLength,
							OutputDataName,
							OutputDataNameLength);
	}
	catch (java_exception_error &ex)
	{
		result = SQL_ERROR;

		LOG_JAVA_EXCEPTION(ex.what());

		JniHelper::LogJavaException(g_env);
	}
	catch (exception &ex)
	{
		result = SQL_ERROR;

		LOG_ERROR(ex.what());
	}
	catch (...)
	{
		result = SQL_ERROR;

		LOG_ERROR("Unexpected exception occurred in function InitSession()");
	}

	return result;
}