mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 06:42:25 -05:00 
			
		
		
		
	pull in ncruces/go-sqlite3 v0.20.3 with tetratelabs/wazero v1.8.2 (#3574)
This commit is contained in:
		
					parent
					
						
							
								6a8af42647
							
						
					
				
			
			
				commit
				
					
						61f8f1e0e3
					
				
			
		
					 41 changed files with 374 additions and 226 deletions
				
			
		
							
								
								
									
										25
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -15,9 +15,15 @@ func osGetSharedLock(file *os.File) _ErrorCode { | |||
| func osGetReservedLock(file *os.File) _ErrorCode { | ||||
| 	rc := osLock(file, unix.LOCK_EX|unix.LOCK_NB, _IOERR_LOCK) | ||||
| 	if rc == _BUSY { | ||||
| 		// The documentation states the lock is upgraded by releasing the previous lock, | ||||
| 		// then acquiring the new lock. | ||||
| 		// This is a race, so return BUSY_SNAPSHOT to ensure the transaction is aborted. | ||||
| 		// The documentation states that a lock is upgraded by | ||||
| 		// releasing the previous lock, then acquiring the new lock. | ||||
| 		// Going over the source code of various BSDs, though, | ||||
| 		// with LOCK_NB, the lock is not released, | ||||
| 		// and EAGAIN is returned holding the shared lock. | ||||
| 		// Still, if we're already in a transaction, we want to abort it, | ||||
| 		// so return BUSY_SNAPSHOT here. If there's no transaction active, | ||||
| 		// SQLite will change this back to SQLITE_BUSY, | ||||
| 		// and invoke the busy handler if appropriate. | ||||
| 		return _BUSY_SNAPSHOT | ||||
| 	} | ||||
| 	return rc | ||||
|  | @ -33,9 +39,11 @@ func osGetExclusiveLock(file *os.File, state *LockLevel) _ErrorCode { | |||
| func osDowngradeLock(file *os.File, _ LockLevel) _ErrorCode { | ||||
| 	rc := osLock(file, unix.LOCK_SH|unix.LOCK_NB, _IOERR_RDLOCK) | ||||
| 	if rc == _BUSY { | ||||
| 		// The documentation states the lock is upgraded by releasing the previous lock, | ||||
| 		// then acquiring the new lock. | ||||
| 		// This is a race, so return IOERR_RDLOCK to ensure the transaction is aborted. | ||||
| 		// The documentation states that a lock is downgraded by | ||||
| 		// releasing the previous lock then acquiring the new lock. | ||||
| 		// Going over the source code of various BSDs, though, | ||||
| 		// with LOCK_SH|LOCK_NB this should never happen. | ||||
| 		// Return IOERR_RDLOCK, as BUSY would cause an assert to fail. | ||||
| 		return _IOERR_RDLOCK | ||||
| 	} | ||||
| 	return _OK | ||||
|  | @ -50,7 +58,10 @@ func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode { | |||
| } | ||||
| 
 | ||||
| func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { | ||||
| 	// Test the RESERVED lock. | ||||
| 	// Test the RESERVED lock with fcntl(F_GETLK). | ||||
| 	// This only works on systems where fcntl and flock are compatible. | ||||
| 	// However, SQLite only calls this while holding a shared lock, | ||||
| 	// so the difference is immaterial. | ||||
| 	lock, rc := osTestLock(file, _RESERVED_BYTE, 1) | ||||
| 	return lock == unix.F_WRLCK, rc | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue