Compare commits

..

67 Commits

Author SHA1 Message Date
rigbot bf5429634a Minimize Jar [pom.xl]
Added minimize jar to configuration. Greatly reduces exported jar file size.
2022-08-18 09:45:40 +00:00
rigbot abd2d6fe03 Update 'pom.xml' 2022-08-18 09:44:50 +00:00
rigbot 2cc46fdae5 Unnecessary Import [EffExecuteStatement.java]
Removed unnecessary import.
2022-08-18 09:43:54 +00:00
rigbot 4fee9f2898 Update 'pom.xml' 2022-08-18 09:41:44 +00:00
rigbot bbbfb83518 Small Changes [pom.xml]
Added minimize jar to configuration. Makes exported jar file size substantially smaller.
2022-08-18 09:41:10 +00:00
Govindas f51db586ef Document supported Minecraft server versions 2022-08-12 08:38:18 +00:00
Govindas 3466a04ec8 Fix null pointer exception 2022-03-21 17:28:59 +02:00
Govindas d0191007a5 Fix mistake in readme 2022-03-20 11:30:51 +01:00
Govindas b1df041ccb Update 'README.md' 2022-03-20 11:29:17 +01:00
Govindas b9e14652ea Update 'README.md' 2022-03-20 11:28:55 +01:00
Govindas 0098450441 Update 'README.md' 2022-03-20 11:28:25 +01:00
Govindas 9c41039217 Update 'README.md' 2022-03-20 11:27:35 +01:00
Govindas 46a72639af Add config to readme 2022-03-20 11:26:33 +01:00
Govindas cbd1565896 Add installation to readme 2022-03-20 11:21:59 +01:00
Govindas 0332ad9334 If we're moving to Java 9, let's move to Java 11 as it is LTS 2022-03-20 12:08:41 +02:00
Govindas 32f40af484 Fix blob column types & Use Java 9 2022-03-20 11:57:25 +02:00
Govindas 2a24a974ef Update dependency, performance improvement 2022-01-28 15:06:16 +02:00
Govindas d80df616c3 Update dependencies 2022-01-23 11:39:02 +02:00
Govindas 0b3b183a14 Fix compilation 2021-10-21 11:00:14 +03:00
Govindas 70fa7b7105 1.3.3 2021-10-21 11:00:12 +03:00
Govindas c85d579645 fix expressions in queries, thanks to TPGamesNL 2021-10-21 11:00:12 +03:00
Govindas 1e039c1bfe fix skript 2.6 support 2021-10-21 11:00:11 +03:00
Govindas 2a4d7f6a6d add null check on locals 2021-10-21 11:00:11 +03:00
Govindas 2dcd4edf58 reformat code (thanks TPGamesNL) 2021-10-21 11:00:11 +03:00
Govindas 9b694206d3 Update README.md 2021-10-21 11:00:10 +03:00
Govindas d8cb6fedb5 finish experimental (disabled) on complete of sql query event 2021-10-21 11:00:10 +03:00
Govindas 2eda1418cf Add Java 8 support 2021-10-21 11:00:09 +03:00
Govindas 83d2795519 set api version to 1.13
I think this will help with performance in 1.13+ version, but will keep working in 1.9+
2021-10-21 11:00:09 +03:00
Govindas 66459c6190 Merge pull request #10 from ham1255/master
Fixed Govindas weirdness on project files (maven fix)
2021-10-21 11:00:08 +03:00
Govindas b1ef437b96 partially fixed pom.xml 2021-10-21 11:00:08 +03:00
mohammed jasem alaajel 35cfb0b4bb Fixed Govindas weirdness on project files 2021-10-21 11:00:08 +03:00
Govindas 4da64624d8 Fix pom.xml & update HikariCP 2021-10-21 11:00:07 +03:00
Govindas 0c16b98553 make sql auto sync if not main thread 2021-10-21 11:00:07 +03:00
Govindas 9e7c5fcbee Preparations for quicker queries (no 50ms delay) feature 2021-10-21 11:00:07 +03:00
Govindas 8b3d26cf78 Update README.md 2021-10-21 11:00:07 +03:00
Govindas 5a22864650 remove thread pool config option & Use CachedThreadPool to make sure all threads are used properly
CachedThreadPool automatically creates threads on demand and automatically deletes unused threads after 60 seconds of no usage, so we can remove config option
2021-10-21 11:00:06 +03:00
Govindas 05554a0043 1.2.1 2021-10-21 11:00:06 +03:00
Govindas f6a43f0b53 Make config more informative 2021-10-21 11:00:06 +03:00
Govindas 5803be55b7 Support missing config options 2021-10-21 11:00:06 +03:00
Govindas d57b921b4f Shade MariaDB driver & add configurable driver class to config 2021-10-21 11:00:06 +03:00
Govindas 4fd654c743 bump HikariCP version 2021-10-21 11:00:06 +03:00
Govindas 233d21a30b Fix memory leak introduced by last commit 2021-10-21 11:00:06 +03:00
Govindas 8e760c4d8b Merge branch 'master' of https://github.com/Govindass/skript-db 2021-10-21 11:00:06 +03:00
Govindas fe2231ae23 Update README.md 2021-10-21 11:00:06 +03:00
Govindas a132912f6b Switch from gradle to maven (preference) and optimize code 2021-10-21 11:00:05 +03:00
Govindas d4f9a394fd Add synchronous syntax to readme 2021-10-21 11:00:05 +03:00
Govindas a63a4c6d6f Fix local variables in sql queries within the same tick & first startup errors 2021-10-21 11:00:05 +03:00
Govindas 11063c166d Bump HikariCP 3.4.3 -> 3.4.5 2021-10-21 11:00:05 +03:00
Govindas b5f2d56263 Remove debug message 2021-10-21 11:00:05 +03:00
Govindas 8b5121d5fb Make thread pool configurable 2021-10-21 11:00:05 +03:00
Govindas b435696385 Add synchronous support on current thread 2021-10-21 11:00:05 +03:00
Govindas 4d795edf01 Merge FranKusmiruk's Pull Request 2021-10-21 11:00:05 +03:00
Govindas 2570408906 add gradle fatJar task 2021-10-21 11:00:05 +03:00
Govindas 8d94a85779 Update HikariCP, should fix a lot of issues 2021-10-21 11:00:05 +03:00
Govindas 6d0ec81e2e Remove unused class 2021-10-21 11:00:05 +03:00
Govindas c4379d45b7 add synchronous 2021-10-21 11:00:04 +03:00
Govindas 434ea07410 Delete EffSyncExecuteStatement.java 2021-10-21 11:00:04 +03:00
Govindas 8ca308802f Delete EffExecuteStatement.java 2021-10-21 11:00:04 +03:00
Govindas 2ce1dd924e Delete plugin.yml 2021-10-21 11:00:02 +03:00
Govindas b20740b020 Add files via upload 2021-10-21 10:59:57 +03:00
Bryan Terce 7906dd8eb1 0.2.1 Hotfix 2019-06-26 01:56:29 -07:00
Bryan Terce 33f4d5ff54 Fix sync execute logic (fixes #16) 2019-06-26 01:55:08 -07:00
Bryan Terce 9a20da02a0 0.2.0 Update 2019-06-22 12:12:27 -07:00
Bryan Terce f13bf78007 Manually fix README 2019-06-22 12:11:29 -07:00
Bryan Terce 55081e5d28 Update README 2019-06-22 12:09:59 -07:00
Bryan Terce d88e431f07 Add synchronous execution flag 2019-06-22 12:09:17 -07:00
Bryan Terce e6606a012a Fix lifespan syntax 2019-06-22 12:05:22 -07:00
5 changed files with 78 additions and 40 deletions

View File

@ -5,11 +5,18 @@
### Difference from original skript-db
- Fixed local variables disappearance in newer Skript versions (very hacky fix, but it works, so that's good!)
- Thread-pool size is now automatically increasing on demand to use of CachedThreadPool, instead of a fixed hard-coded number
- Uses a newer version of HikariCP
- Only meant to be used by newer Minecraft versions (1.8 is not supported)
- Thread-pool size is now automatically increasing on demand with use of CachedThreadPool, instead of a fixed hard-coded number
- Uses newer versions of dependencies (Increased performance and security)
- Replaced `synchronously execute` with `quickly execute`, which allows to speed up queries by 50ms with some risk
- SQL Driver is configurable
- A few variable type related bugs fixed
- Uses Java 11 instead of Java 8
### Installation
1. Use 1.8+ Minecraft server version.
2. Use Skript 2.5+ (1.8 Skript fork is needed if you're using 1.8)
3. Use Java 11+ (If you use 1.8, a spigot fork is needed to support Java 11+)
4. Put skript-db in plugins folder and restart the server
### Expression `Data Source` => `datasource`
Stores the connection information for a data source. This should be saved to a variable in a
`script load` event or manually through an effect command.
@ -78,3 +85,10 @@ execute unsafe {fully dynamic query} in {sql}
```
---
### Configuration
plugins/skript-db/config.yml
```
# Only change this if you wish to use a different driver than Java's default, like MariaDB driver.
# If you use MariaDB, its driver is shaded together with skript-db, so you can just specify: "org.mariadb.jdbc.Driver"
sql-driver-class-name: "default"
```

13
pom.xml
View File

@ -6,7 +6,7 @@
<groupId>com.btk5h</groupId>
<artifactId>skript-db</artifactId>
<version>1.3.1</version>
<version>1.3.5</version>
<packaging>jar</packaging>
<repositories>
@ -45,8 +45,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>8</source>
<target>8</target>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
@ -56,6 +56,7 @@
<version>3.2.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
</configuration>
<executions>
<execution>
@ -81,7 +82,7 @@
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
<version>5.0.1</version>
<scope>compile</scope>
</dependency>
<dependency>
@ -93,14 +94,14 @@
<dependency>
<groupId>com.github.SkriptLang</groupId>
<artifactId>Skript</artifactId>
<version>2.6-alpha1</version>
<version>2.6-beta3</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.7.2</version>
<version>3.0.3</version>
<scope>compile</scope>
</dependency>

View File

@ -14,6 +14,9 @@ import org.bukkit.event.Event;
import javax.sql.DataSource;
import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.serial.SerialBlob;
import javax.sql.rowset.serial.SerialException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
@ -105,41 +108,43 @@ public class EffExecuteStatement extends Effect {
if (getNext() != null) {
//if local variables are present
if (locals != null) {
//bring back local variables
//bring back local variables
//populate SQL data into variables
if (!(res instanceof String)) {
//populate SQL data into variables
if (!(res instanceof String)) {
//also set variables in the sql query complete event
//also set variables in the sql query complete event
//TEMPORARILY DISABLED, AS THIS WOULD WORSEN PERFORMANCE OF THE QUERIES AND NOT BE USED BY MOST PEOPLE.
//I may add config option to enable this later?
//TEMPORARILY DISABLED, AS THIS WOULD WORSEN PERFORMANCE OF THE QUERIES AND NOT BE USED BY MOST PEOPLE.
//I may add config option to enable this later?
//SQLQueryCompleteEvent event = new SQLQueryCompleteEvent(this.query.getSingle(e));
//((Map<String, Object>) res).forEach((name, value) -> setVariable(event, name, value));
//SkriptDB.getPlugin(SkriptDB.class).getServer().getPluginManager().callEvent(event);
}
if (isSync || finalSync) {
//SQLQueryCompleteEvent event = new SQLQueryCompleteEvent(this.query.getSingle(e));
//((Map<String, Object>) res).forEach((name, value) -> setVariable(event, name, value));
//SkriptDB.getPlugin(SkriptDB.class).getServer().getPluginManager().callEvent(event);
}
if (isSync || finalSync) {
if (locals != null) {
Variables.setLocalVariables(e, locals);
}
if (!(res instanceof String)) {
((Map<String, Object>) res).forEach((name, value) -> setVariable(e, name, value));
}
TriggerItem.walk(getNext(), e);
Variables.removeLocals(e);
} else {
Bukkit.getScheduler().runTask(SkriptDB.getInstance(), () -> {
if (locals != null) {
Variables.setLocalVariables(e, locals);
}
if (!(res instanceof String)) {
((Map<String, Object>) res).forEach((name, value) -> setVariable(e, name, value));
}
TriggerItem.walk(getNext(), e);
//the line below is required to prevent memory leaks
//no functionality difference notice with it being removed from my test, but the memory gets filled with leaks
//so it must be kept
Variables.removeLocals(e);
} else {
Bukkit.getScheduler().runTask(SkriptDB.getInstance(), () -> {
Variables.setLocalVariables(e, locals);
if (!(res instanceof String)) {
((Map<String, Object>) res).forEach((name, value) -> setVariable(e, name, value));
}
TriggerItem.walk(getNext(), e);
//the line below is required to prevent memory leaks
//no functionality difference notice with it being removed from my test, but the memory gets filled with leaks
//so it must be kept
Variables.removeLocals(e);
});
}
});
}
}
});
@ -174,7 +179,11 @@ public class EffExecuteStatement extends Effect {
if (o instanceof String) {
sb.append(o);
} else {
Expression<?> expr = SkriptUtil.getExpressionFromInfo(o);
Expression<?> expr;
if (o instanceof Expression)
expr = (Expression<?>) o;
else
expr = SkriptUtil.getExpressionFromInfo(o);
String before = getString(objects, i - 1);
String after = getString(objects, i + 1);
@ -293,6 +302,21 @@ public class EffExecuteStatement extends Effect {
}
private void setVariable(Event e, String name, Object obj) {
//fix mediumblob and similar column types, so they return a String correctly
if (obj != null) {
if (obj.getClass().getName().equals("[B")) {
obj = new String((byte[]) obj);
//in some servers instead of being byte array, it appears as SerialBlob (depends on mc version, 1.12.2 is bvte array, 1.16.5 SerialBlob)
} else if (obj instanceof SerialBlob) {
try {
obj = new String(((SerialBlob) obj).getBinaryStream().readAllBytes());
} catch (IOException | SerialException ex) {
ex.printStackTrace();
}
}
}
Variables.setVariable(name.toLowerCase(Locale.ENGLISH), obj, e, isLocal);
}
@ -328,4 +352,4 @@ public class EffExecuteStatement extends Effect {
}
return true;
}
}
}

View File

@ -6,7 +6,6 @@ import ch.njol.skript.lang.SkriptEvent;
import ch.njol.skript.lang.SkriptParser;
import com.btk5h.skriptdb.events.SQLQueryCompleteEvent;
import org.bukkit.event.Event;
import org.eclipse.jdt.annotation.Nullable;
public class EvtSQLQueryComplete extends SkriptEvent {
static {
@ -24,7 +23,7 @@ public class EvtSQLQueryComplete extends SkriptEvent {
}
@Override
public String toString(@Nullable Event event, boolean debug) {
public String toString(Event event, boolean debug) {
return "complete of sql query";
}
}

View File

@ -1,6 +1,6 @@
name: skript-db
version: 1.3.1
version: 1.3.5
main: com.btk5h.skriptdb.SkriptDB
depend: [Skript]
authors: [btk5h, FranKusmiruk, Govindas]
authors: [btk5h, FranKusmiruk, Govindas, TPGamesNL]
api-version: 1.13